私のViewModelには、IsConnected
というboolプロパティがあり、MainWindowのTextBlockにバインドしたいと思います。テキストブロックをtrue
またはfalse
と読み替えるのではなく、代わりにConnected
またはDisconnected
と言う必要があります。私がWPFを初めて使ったので私を許してください。もし誰かが私に頭をスタートさせることができたら、そこから取り除くことができますが、私は必要なものを見つけ出す方法がわかりません。WPFデータのバインドと書式設定
答えて
私は、一般的に(私は本当に価値コンバータを嫌い)だけビューモデルにプロパティを追加することを好むだろうが、ここであなたのスタイルを使用して何をしようとして達成するための簡単な方法があります:
<TextBlock>
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Text" Value="Connected"/>
<Style.Triggers>
<DataTrigger Binding="{Binding IsConnected}" Value="False">
<Setter Property="Text" Value="Disconnected"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
を編集しますが、データトリガを使用に慣れたら、あなたはあなたのビューモデルに触れることなく、あなたのビューに変更のすべての種類を作ることができることを
注意。たとえば、
<StackPanel>
<Image Source="images\connected.png">
<Image.Style>
<Style TargetType="Image">
<Setter Property="Visibility" Value="Collapsed"/>
<Style.Triggers>
<DataTrigger Binding="{Binding IsConnected}" Value="True">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>
<Image Source="images\disconnected.png">
<Image.Style>
<Style TargetType="Image">
<Setter Property="Visibility" Value="Collapsed"/>
<Style.Triggers>
<DataTrigger Binding="{Binding IsConnected}" Value="False">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>
</StackPanel>
おそらく最も簡単な方法は、bool値を文字列に変換するカスタムコンバータを作成することです。 IValueConverterおよび/またはWPFの任意の場所を検索します。
public class BoolToConnectedConverter : IValueConverter
{
#region IValueConverter Members
public object Convert(object value, Type targetType, object parameter,
System.Globalization.CultureInfo culture)
{
if((bool)value)
return "Connected";
else
return "Disconnected";
}
public object ConvertBack(object value, Type targetType, object parameter,
System.Globalization.CultureInfo culture)
{
throw new NotSupportedException();
}
#endregion
}
のxmlnsを追加します。
xmlns:converter="clr-namespace:MyProjectNameSpace"
は、XAML(どんな要素必要に変化する)XAMLで
<Window.Resources>
<converter:BoolToConnectedConverter x:Key="connectedConverter" />
</Window.Resources>
にリソースを追加します。
<TextBlock Text={Binding IsConnected, Converter={StaticResource connectedConverter}" />
詳細を入力してください。 – ocodo
これを行う唯一の変更は、文字列リソースファイルからテキストを取得することです。そうすれば、汎用のBoolToStringコンバーターにすることができます。コンバーターパラメーターを使用してリソースキーのプレフィックスを渡します(プレフィックス+ブール値==リソースから文字列を取得するために必要な完全キー)。 – slugster
@slugster、私はそれに同意します。それについて少し考えてみましたが、このサンプルでは簡単に捨てました。 – ThomasAndersson
あなたがこの中に行うことができます2つの方法
1)それが目的の文字列の代わりに、
最も簡単な方法は、#2であるブール値を返すようにコンバータ
2)のViewModelに機能を変更を書くが、あなたは本当にbool値が必要な場合#1(google converterとwpf)に行くコードのどこか他の場所
バリューコンバータを見てください。あなたのXAMLで
http://www.wpftutorial.net/ValueConverters.html
public class BoolToConnectedConverter : IValueConverter
{
public object Convert(object value, Type targetType,
object parameter, CultureInfo culture)
{
var isConnected = (bool)value;
return isConnected ? "Connected" : "Disconnected";
}
public object ConvertBack(object value, Type targetType,
object parameter, CultureInfo culture)
{
throw new NotImplementedException("Not required for read-only values");
}
}
:
のViewModelを使用して<Window.Resources>
<l:BoolToConnectedConverter x:Key="boolToConnectedConverter" />
</Window.Resources>
<Grid>
<Label Content="{Binding IsConnected, Converter={StaticResource boolToConnectedConverter}}" />
</Grid>
、次の2台のプロパティラップを書き、不動産に変更を通知します。
値が変更されるたびに、文字列表現は更新され、コントロールにバインドされますが、コードではboolプロパティを引き続き使用できます。
public string IsConnectedStr{
get{
return IsConnected?"Connected":"Disconnected";
}
}
public bool IsConnected{
get{
return _isConnected;
}
set{
_isConnected=value;
PropertyChanged("IsConnected");
PropertyChanged("IsConnectedStr");
}
}
- 1. JSONデータの書式設定
- 2. WPF DataGridでのセルの書式設定
- 3. RichtextBoxでのテキストの書式設定WPF
- 4. ListViewでのWPFテキスト書式設定
- 5. GridViewColumnのWPFテキスト書式設定
- 6. データセットのデータ型の書式設定行
- 7. GridViewのAutoGenerateColumnsでのデータ書式設定
- 8. WPFプロパティへのバインドと別の設定
- 9. R Shiny-書式設定の上に書式設定
- 10. 辞書書式設定とdefaultdict関数
- 11. 表形式データの表示/書式設定
- 12. Crystal Reports/FormatEditor/Display文字列式:データの書式設定方法
- 13. NSDate書式設定
- 14. codelite書式設定
- 15. pdf書式設定
- 16. wpfの条件付き書式設定ツールキットのデータグリッド
- 17. WPF Datagridでのフォントの条件付き書式設定
- 18. WPF DataGridCellの条件付き書式設定
- 19. SQL改行と書式設定データを挿入します。
- 20. WebViewのフォントとサイズの書式設定
- 21. iCalendarと説明の書式設定
- 22. PHPMailerとスタイルシートの書式設定
- 23. vbaパワーポイントの書式設定%と$
- 24. Excelのマージと書式設定
- 25. PHPとメールの書式設定
- 26. モデルの書式設定と日付フィールド
- 27. zeroclipboard - テキストのコピーと書式設定
- 28. テキストボックスの書式設定
- 29. JavaScriptの書式設定
- 30. domdocumentの書式設定
これは問題のより良い解決策であるようです。私は本当にコンバータがそんなに良いアイデアだとは思っていません。スタイルはよりよくフィットするように見え、文字列値を生成するヘルパープロパティを作成する必要はありません。私はむしろViewModelデータを意図したデータとして保持したいと思います。 – jlafay
私は別のプロパティのために私のビューで同様のことをしたいので、偉大な働き、イメージの例に感謝します。 – jlafay