我花了很多時間嘗試在CheckBox單擊事件中更改行文本顏色。如何更改DataGrid單擊複選框上的行顏色?
因此,如果複選框被選中,我們需要將顏色設置爲灰色,並且如果未選中複選框,則將其返回正常顏色。
請幫忙得到這個結果(DataGrid綁定到xml文件)。
Upd。有些代碼:
XAML爲行變色基於選中(複選框)柱:
<Window.Resources>
<Style TargetType="{x:Type DataGridRow}">
<Setter Property="Foreground" Value="{Binding Checked, Converter={x:Static local:MainWindow.rowCheckedConverter}}" />
</Style>
</Window.Resources>
...
<Grid.DataContext>
<XmlDataProvider x:Name="userTasksProvider" XPath="UserTasks" />
</Grid.DataContext>
...
<DataGrid Name="dgUserTasks" Grid.Column="1" Margin="1,0,0,0"
AutoGenerateColumns="False" HeadersVisibility="None"
ItemsSource="{Binding XPath=Task}">
<DataGrid.Columns>
<DataGridCheckBoxColumn x:Name="cbUserTasksColumn" Width="20"
Binding="{Binding Checked,
Mode=TwoWay}" Header="">
</DataGridCheckBoxColumn>
<DataGridTextColumn
x:Name="Info" Width="*"
Binding="{Binding Info,
Mode=TwoWay}"
Header="" >
</DataGridTextColumn>
...
C#WPF:
public partial class MainWindow : Window
{
public static RowCheckedConverter rowCheckedConverter = new RowCheckedConverter();
...
}
...
public class RowCheckedConverter : IValueConverter {
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
if ((bool)value) {
return new SolidColorBrush(Colors.Gray);
}
else {
return new SolidColorBrush(Colors.Black);
}
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
throw new Exception("The method or operation is not implemented.");
}
}
提供一些代碼,請... – Tigran 2012-07-10 06:40:25
-1,因爲如果該複選框布爾值是集合的ItemsSource的一部分,它是不是沒有說明。這對於答案是至關重要的。提供一些代碼,我會刪除downvote,你也會得到一些更好的幫助;) – blindmeis 2012-07-10 09:30:17
謝謝,提供的源代碼。 – 2012-07-10 11:17:34