我制作了一个由 3 个滑块和一些标签组成的 UserControl。用于操纵类的平移、旋转和缩放值。
每个用户控件都有自己的平移、旋转和缩放属性。相应滑块的值绑定到此属性。
这一切都会正常工作,直到用户尝试通过用鼠标滑动滑块来手动更改该值。无论出于何种原因,这都不会更新该属性。
这是如何设置其中一个滑块的示例:
<Slider x:Name="sliderTranslation" Grid.Column="1" Grid.Row="1" VerticalAlignment="Center" ToolTip="{Binding Value, RelativeSource={RelativeSource Self}}" Value="{Binding Path=Translation}" Thumb.DragCompleted="SliderTranslation_DragCompleted" Maximum="65535" TickFrequency="0" SmallChange="1" AutoToolTipPlacement="TopLeft"/>
这就是我的 DataGrid 的设置方式:
<DataGrid x:Name="dgValueList" Margin="10,72,10,76" SelectionMode="Single" IsReadOnly="True" BorderThickness="2" AlternationCount="2" EnableRowVirtualization="False">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Face Values" Width="*" CanUserReorder="False">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<local:FaceValueSlider/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
所以对于一些背景。DataGrid 由 49 个这样的用户控件组成。所以本质上总共有 147 个滑块。
让我们以第一个 UserControl 为例,它有这些值;
平移:3380
旋转:49972
比例:16807
如果我将翻译滑块移动到最大值(65535)并保存,我得到的返回值仍然是 3380。但是,如果我通过我添加的方法更新它们,它会按预期工作。只有当他们尝试手动滑动它时,它才会这样做。
除此之外,我还收到 51 条与 UserControls 相关的警告,但我不知道它们的含义。这是其中 2 个:
System.Windows.Data 警告:4:无法找到引用“RelativeSource FindAncestor、AncestorType='System.Windows.Controls.ItemsControl”、AncestorLevel='1'' 进行绑定的源。BindingExpression:Path=HorizontalContentAlignment; 数据项=空;目标元素是“ListBoxItem”(名称=“”);目标属性是“HorizontalContentAlignment”(类型“HorizontalAlignment”)
System.Windows.Data 警告:4:无法找到引用“RelativeSource FindAncestor、AncestorType='System.Windows.Controls.ItemsControl”、AncestorLevel='1'' 进行绑定的源。绑定表达式:路径=(0); 数据项=空;目标元素是“ListBoxItem”(名称=“”);目标属性是“ClearTypeHint”(类型“ClearTypeHint”),
我这整个绑定的事情做错了吗?我尝试在创建 UserControls 时将其添加到列表中,并设置 DataGrid 的 ItemsSource。
饮歌长啸
相关分类