Wpf XAML到代码隐藏

Wpf XAML到代码隐藏,wpf,xaml,styles,code-behind,datatrigger,Wpf,Xaml,Styles,Code Behind,Datatrigger,我在将XAML转换为codebehind时遇到问题 我有这个: <DataGrid.RowStyle> <Style TargetType="DataGridRow"> <Style.Triggers> <DataTrigger Binding="{Binding state}" Value="True"> <Setter Property="Background" Value="G

我在将XAML转换为codebehind时遇到问题

我有这个:

<DataGrid.RowStyle>
   <Style TargetType="DataGridRow">
      <Style.Triggers>
         <DataTrigger Binding="{Binding state}" Value="True">
            <Setter Property="Background" Value="GreenYellow"/>                                                  
         </DataTrigger>
         <DataTrigger Binding="{Binding state}" Value="False">
            <Setter Property="Background" Value="Red"/>
         </DataTrigger>
      </Style.Triggers>
   </Style>
</DataGrid.RowStyle>

-遗憾的是,它不起作用

您需要更改Setter的
属性

DataGrid.RowBackgroundProperty

或同等品

Control.BackgroundProperty.

我建议在XAML中构建
样式
本身,然后在需要时在代码中提取它。例如,如果一切都发生在
用户控件中

<UserControl x:Class=...
             ...
>
    <UserControl.Resources>
        <Style x:Key="MyRowStyle" TargetType="DataGridRow">
            <Style.Triggers>
                <DataTrigger Binding="{Binding state}" Value="True">
                    <Setter Property="Background" Value="GreenYellow"/>                                                  
                </DataTrigger>
                <DataTrigger Binding="{Binding state}" Value="False">
                    <Setter Property="Background" Value="Red"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </UserControl.Resources>

    <!-- Your content here.. -->

您尚未将
设置为绿色。绑定
。为什么要使用电刷转换器?你可以只写
画笔。绿黄色的
。我不知道画笔的事,我会写的。谢谢我似乎忽略了这一部分,编辑了这个问题。我想你应该设置
DataGridRow.BackgroundProperty
而不是
DataGrid.RowBackgroundProperty
。成功了这是一个奇迹:)
Control.BackgroundProperty.
<UserControl x:Class=...
             ...
>
    <UserControl.Resources>
        <Style x:Key="MyRowStyle" TargetType="DataGridRow">
            <Style.Triggers>
                <DataTrigger Binding="{Binding state}" Value="True">
                    <Setter Property="Background" Value="GreenYellow"/>                                                  
                </DataTrigger>
                <DataTrigger Binding="{Binding state}" Value="False">
                    <Setter Property="Background" Value="Red"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </UserControl.Resources>

    <!-- Your content here.. -->
var newGrid = new Dataview(ds.Tables[mytable]);
newGrid.RowStyle = this.Resources["MyRowStyle"] as Style;