相关疑难解决方法(0)

如何在XAML中将颜色转换为画笔?

我想将System.Windows.Media.Color值转换为System.Windows.Media.Brush.颜色值被数据绑定到Rectangle对象的Fill属性.Fill属性采用Brush对象,因此我需要一个IValueConverter对象来执行转换.

WPF中是否有内置转换器,还是需要创建自己的转换器?如果有必要,我该如何创建自己的?

data-binding wpf xaml colors converter

49
推荐指数
4
解决办法
5万
查看次数

将DataTrigger绑定到复选框的IsChecked属性

我相信我所要做的就是"简单",所以我可能只是错过了一些明显的东西.

在DataGrid中,我试图绑定一个CheckBox,以便在选中它时,其行的Background颜色将会改变.每行都有一个CheckBox.我基本上实现了我自己的select-multiple-rows功能(这是产品要求,不要问),而且我还有其他所有工作,但这是所选行的可视化指示.

我已经读过这个问题,但是我缺少答案的地方是"BooleanPropertyOnObjectBoundToRow".我也看了这个问题并尝试弄乱了一个RelativeSource,但没有运气.

我在我的代码隐藏中创建了我的网格,但这是我用于行的当前样式(它定义了我的DataTrigger):

<Style x:Key="MyRowStyle" TargetType="DataGridRow">
      <Style.Triggers>
           <DataTrigger Binding="{Binding IsChecked}" Value="True">
               <Setter Property="Background" Value="Blue"/>
           </DataTrigger>
      </Style.Triggers>
</Style>
Run Code Online (Sandbox Code Playgroud)

现在在我的代码隐藏中,我创建了我的DataGridTemplateColumn并使用Factory来创建我的复选框,这是我的Binding相关代码:

Binding checkBinding = new Binding("IsChecked");
checkBinding.Mode = BindingMode.OneWayToSource;
RelativeSource relativeSource = new RelativeSource();
relativeSource.AncestorType = typeof(DataGridRow);
relativeSource.Mode = RelativeSourceMode.FindAncestor;
checkBinding.RelativeSource = relativeSource;
factory.SetBinding(CheckBox.IsCheckedProperty, checkBinding);
Run Code Online (Sandbox Code Playgroud)

可能感兴趣的是我将DataGrid的ItemsSource设置为DataTable,但我的CheckBox列在DataTable中没有相应的列.我只是单独添加模板列,也许缺少底层存储会影响这个?

在任何情况下,如果您需要更多信息,请告诉我.谢谢!

wpf checkbox binding datagrid datatrigger

6
推荐指数
1
解决办法
7712
查看次数