こんにちは。エクセルソフトの田淵です。
Xamarin.Forms で IValueConverter を使う - Xamarin 日本語情報 でも書いたのですが、IValueConverter には ConverterParameter という引数があって、条件分岐とかに使うそうです。
Switch の IsToggled を ConverterParameter に渡す方法を考えていますが、、、
<Editor Text="{Binding Message}" /> <Switch x:Name="switcher" /> <Label x:Name="letterlabel" />
コードビハインド
this.switcher.PropertyChanged += (object sender, PropertyChangedEventArgs e) => { this.letterlabel.SetBinding(Label.TextProperty, new Binding("Message", converter: new Converters.StringCaseConverter(), converterParameter: switcher.IsToggled)); };
なんか、、凄くいやです。。
C# で書いた場合も
var editor = new Editor { Text = "" }; editor.SetBinding(Editor.TextProperty, "Message"); switcher = new Switch { }; switcher.PropertyChanged += (object sender, PropertyChangedEventArgs e) => { sclabel.SetBinding(Label.TextProperty, new Binding("Message", converter: new Converters.StringCaseConverter(), converterParameter: switcher.IsToggled)); }; sclabel = new Label { Text = "" };
こんな感じになっちゃいます。
OnPropertyChanged が別にあるのに、書き方が分からない… Label の Binding の ConverterParameter で switcher.IsToggled とか指定しても、変更のたびに通知してあげないと初期値 false から取得値が変わらないですよね。
Switch の値によって ConverterParameter を切り替えるのってどのように書くのが良いのでしょう?
以上です。