概要
任意のラジオボタンが選択されたとき、テキストボックスやボタン等のコントロールの有効(Enable)、無効(DisEnable)を切り替えたい。
ソース
ビュー(XAML)のみで実現するので、XAMLのみです。
XAML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<Window x:Class="IsEnabledBindTest.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:IsEnabledBindTest" mc:Ignorable="d" Title="MainWindow" Height="178" Width="166.666"> <Grid> <StackPanel> <!-- radioButton01がチェックされている(True)の時、IsEnabledがTrue --> <RadioButton x:Name="radioButton01" Content="RadioButton01" GroupName="a" IsChecked="True"/> <RadioButton x:Name="radioButton02" Content="RadioButton02" GroupName="a" /> <TextBox x:Name="textBox" Text="TextBox" IsEnabled="{Binding IsChecked, ElementName=radioButton01}"/> <!-- radioButton03がチェックされている(True)の時、IsEnabledがTrue Pathを省略しない場合はこのように書く--> <RadioButton x:Name="radioButton03" Content="RadioButton03" GroupName="b" IsChecked="True"/> <RadioButton x:Name="radioButton04" Content="RadioButton04" GroupName="b" /> <Button x:Name="button" Content="Button" IsEnabled="{Binding ElementName=radioButton03,Path=IsChecked}"/> </StackPanel> </Grid> </Window> |
動作イメージ
RadioButton01がチェックされているとき、テキストボックスがEnabled。
RadioButton03がチェックされているとき、ボタンがEnabled。
RadioButtonは01と02、及び、03と04がそれぞれ同じグループです。
RadioButton01のチェックが外れると、テキストボックスがDisEnabled(IsEnabled = false)。
RadioButton03のチェックが外れると、ボタンがDisEnabled(IsEnabled = false)。
課題
ラジオボックスがFalseの時にIsEnableをTrueにするにはどうすれ良いでしょう・・・・(要調査)
ValueConverterを使えば実現できるのでしょうか・・・?
[] .net 3.5 – How to bind inverse boolean properties in WPF? – Stack Overflow
How to bind inverse boolean properties in WPF?
What I have is an object that has an IsReadOnly property. If this property is true, I would like to set the IsEnabled property on a Button, ( for example ), to ...
コメント