C# 改变数据网格单元的颜色,然后聚焦
我可以使用setter根据文本框中更改的值更改单元格颜色,然后可以使用setter将该行聚焦。我的数据网格非常基本,2列,第二列有数字1到100。在XAML中,我有:C# 改变数据网格单元的颜色,然后聚焦,c#,wpf,xaml,datagrid,setter,C#,Wpf,Xaml,Datagrid,Setter,我可以使用setter根据文本框中更改的值更改单元格颜色,然后可以使用setter将该行聚焦。我的数据网格非常基本,2列,第二列有数字1到100。在XAML中,我有: <DataGrid Name="Sampledatagrid" AutoGenerateColumns="False" ItemsSource="{StaticResource MyOddsLadder}" Margin="0,0,0,10"
<DataGrid Name="Sampledatagrid" AutoGenerateColumns="False" ItemsSource="{StaticResource MyOddsLadder}" Margin="0,0,0,10" EnableRowVirtualization="False" >
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Binding="{Binding Name}" />
<DataGridTextColumn Header="No" Binding="{Binding No}" />
</DataGrid.Columns>
<DataGrid.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<EventSetter Event="GotFocus" Handler="DataGridCell_GotFocus"></EventSetter>
<Setter Property="Background">
<Setter.Value>
<MultiBinding Converter="{StaticResource ResourceKey=CellColor}">
<Binding RelativeSource="{RelativeSource Mode=Self}"/>
<Binding Mode="OneWay" ElementName="contactFilterTextBox" Path="Text"/>
</MultiBinding>
</Setter.Value>
</Setter>
</Style>
</DataGrid.CellStyle>
</DataGrid>
<TextBox x:Name="contactFilterTextBox" HorizontalAlignment="Left" Height="23" Margin="53,214,0,-57" TextWrapping="Wrap" Text="2" VerticalAlignment="Top" Width="120" />
我所要做的就是当颜色被添加到那一行的时候。我在谷歌上搜索了很多东西,但就是不知道该怎么开始。干杯,罗伯特
public class ColorBasedOnFilterConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
System.Windows.Media.SolidColorBrush cellColor = Brushes.White;
DataGridCell cellToAnalyze = (DataGridCell)values[0];
TextBlock cellContents = (TextBlock)cellToAnalyze.Content;
if (cellContents != null)
{
string cellValue = (string)cellContents.Text;
string filterValue = values[1].ToString();
if (!(String.IsNullOrEmpty(filterValue)))
{
if (cellValue == filterValue)
{
cellColor = Brushes.LightSalmon;
}
}
}
return cellColor;
}
public object[] ConvertBack(
object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotSupportedException();
}
}