2015-12-15 4 views
0

У меня есть этот вид модели:Как связать цвет в моем XAML

public class MyData 
{ 
    public string Status; 
    public StatusMsg StatusMessage; 
    private Brush _statusBrushes; 

    public Brush StatusBrushes 
    { 
     get 
     { 
      switch (StatusMessage) 
      { 
       case StatusMsg.Cancel: 
        return Brushes.Red; 

       case StatusMsg.InProcess: 
        return Brushes.Blue; 

       case StatusMsg.Done: 
        return Brushes.Green; 

       default: 
        return Brushes.Green; 
      } 
     } 
     set { _statusBrushes = value; } 
    } 

    public enum StatusMsg 
    { 
     Cancel, 
     Done, 
     InProcess,    
    } 
} 

Теперь у меня есть этот GridViewColumn:

<GridViewColumn Width="180" Header="Status"> 
    <GridViewColumn.CellTemplate> 
     <DataTemplate> 
      <TextBlock x:Name="Txt" Text="{Binding Status}" Foreground="Yellow" /> 
     </DataTemplate> 
    </GridViewColumn.CellTemplate> 
</GridViewColumn> 

Так как вы можете увидеть это GridViewColumn цвет желтый и я хочу измените его в соответствии с моим StatusMsg (мое перечисление), поэтому мой вопрос заключается в том, как связать мой цвет с моим XAML?

+0

Здесь мы не имеем большого количества кода. Где находится свойство 'Status'? Можете ли вы опубликовать как свою модель представления, так и код модели? –

ответ

0

Я бы рекомендовал создание IValueConverter, который способен преобразовать значение перечисления в соответствующий цвет, а затем привязки, будет выглядеть примерно так:

<GridViewColumn Width="180" Header="Status"> 
    <GridViewColumn.CellTemplate> 
     <DataTemplate> 
      <TextBlock x:Name="Txt" Text="{Binding Status}" 
       Foreground="{Binding Path=StatusColor, Converter={StaticResource MyStatusColorConverter}" /> 
     </DataTemplate> 
    </GridViewColumn.CellTemplate> 
</GridViewColumn> 

Вы, конечно, также необходимо создать ресурс, вот учебник о том, что появился быстрый поиск бинга: http://wpftutorial.net/ValueConverters.html

Смежные вопросы