XAML의 일부 특성을 열거 형으로 바인딩하려고합니다. 작동 방식 : 메뉴 모음에 열거 형 값을 설정하는 라디오 버튼이 있습니다. 이 열거 형 값은 isEnabled
속성을 Grid
에 설정합니다. 따라서 라디오 버튼 -> (EnumToBooleanConverter) -> 열거 형 개체 -> (EnumToIsActiveCnoverter) ->isEnabled
특성이 있습니다. 바인딩을 수행하기 위해 두 개의 변환기를 작성했습니다. 코드 :WPF 변환기가있는 바인딩이 작동하지 않습니다.
<Window.Resources>
<local:EnumToBooleanConverter x:Key="actionConverter" />
<local:EnumToIsActiveConverter x:Key="activityConverter" />
</Window.Resources>
...
<MenuItem Header="Settings">
<MenuItem Header="Action">
<MenuItem Header="Draw">
<MenuItem.Icon>
<RadioButton GroupName="MenuActionButton"
IsChecked="{Binding Path=appMode,
Converter={StaticResource actionConverter},
ConverterParameter={x:Static local:ApplicationMode.Draw}}"/>
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="Edit">
<MenuItem.Icon>
<RadioButton GroupName="MenuActionButton"
IsChecked="{Binding Path=appMode,
Converter={StaticResource actionConverter},
ConverterParameter={x:Static local:ApplicationMode.Edit}}"/>
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="Constraints">
<MenuItem.Icon>
<RadioButton GroupName="MenuActionButton"
IsChecked="{Binding Path=appMode,
Converter={StaticResource actionConverter},
ConverterParameter={x:Static local:ApplicationMode.Constraints}}"/>
</MenuItem.Icon>
</MenuItem>
</MenuItem>
</MenuItem>
CS 파일 : 주어진 매개 변수에 열거 값이 라디오 버튼이 선택되어
public partial class MainWindow : Window
{
public ApplicationMode appMode { get; set; }
public MainWindow()
{
this.appMode = ApplicationMode.Draw;
InitializeComponent();
}
}
public class EnumToBooleanConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
//return value.Equals(parameter);
return null;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return value.Equals(true) ? parameter : Binding.DoNothing;
}
}
public class EnumToIsActiveConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return value.Equals(parameter);
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
//return value.Equals(true) ? parameter : Binding.DoNothing;
return Binding.DoNothing;
}
}
public enum ApplicationMode
{
Draw,
Edit,
Constraints
}
EnumToBooleanConverter
변화와 EnumToIsActiveConverter
변경 isEnabled
(A)의 속성은 주어진 enum 값이 주어진 매개 변수로 설정된 경우 요소. 그것은 나에게 잘 작동해야합니다. 내가 여기서 무엇을 놓치고 있니?
이것은 정확히 내가 한 일입니다! –
@ wis.niowy 당신은 대답을 어떻게 받아 들일지 압니까? 여기 https://stackoverflow.com/help/someone-answers를 참조하십시오. 귀하의 질문 기록에 따르면 당신은 당신이 이것을 할 수있는 많은 질문을 가지고 있습니다. 당신은 각각 +2 평판을 얻을 수 있습니다. – dovid