プロジェクトにこの列挙を追加します -
public enum RowState
{
Blue,
Red,
Green,
White
}
次に、あなたのViewModelにこのプロパティを追加します - すべてのCouldBeXXX
プロパティが変更されたときに
private RowState _RowState;
public RowState RowState
{
get { return _RowState; }
set
{
if (value != _RowState)
{
_RowState = value;
NotifyPropertyChanged("RowState"); // Assumes typical implementation of INotifyPropertyChanged
}
}
}
private void UpdateRowState()
{
if (CouldBeWhite)
RowState = RowState.White;
else if (CouldBeGreen)
RowState = RowState.Green;
else if (CouldBeRed)
RowState = RowState.Red;
else
RowState = RowState.Blue;
}
コールUpdateRowState。
フォアグラウンドを白や赤、または緑に変えないようにしてください。いくつかの理由があるでしょうなぜその白、赤または緑です。したがって、あなたのコードでは、単純な短い名前を考えてその理由を表現し、色の名前をその意味のある名前に置き換えてください。
blogのStringToValueConverter
のコードを取得します。 UserControl.Resources
であなたのXAMLに、このインスタンスを追加します。
<local:StringToObjectConverter x:Key="RowStateToBrush">
<ResourceDictionary>
<SolidColorBrush Color="Red" x:Key="Red" />
<SolidColorBrush Color="Green" x:Key="Green" />
<SolidColorBrush Color="White" x:Key="White" />
<SolidColorBrush Color="Blue" x:Key="__default__" />
</ResourceDictionary>
</local:StringToObjectConverter>
あなたはTextBlock
にバインドすることができます。
<TextBlock Text="{Binding SomeTextProperty}" Foreground="{Binding RowState, Converter={StaticResource RowStateToBrush}}" />
ロジックは私の心を通して穴を燃やすこと。どうすれば 'enumはShouldBe(White、Green、Red)'になるのでしょうか? – Will