내 UI (WPF)에 세 개의 라디오 버튼이 있습니다. 둘 중 하나를 선택하여 Textbox를 사용하도록 설정하려고합니다. 세 번째 항목을 선택하면 텍스트 상자가 비활성화되어야합니다. Multibinding을 사용해야합니까? 그렇다면 어떻게?텍스트 상자 바인딩 두 개의 다른 라디오 버튼을 동시에 사용할 수 있습니다.
답변
왜 IsEnabled
을 세 번째 라디오 버튼의 "선택되지 않음"상태로 설정하지 않습니까? 일반적으로 라디오 버튼 그룹은 한 번에 하나만 검사 할 수 있다는 점에서 독점적입니다. 사용자 정의 변환기
<StackPanel>
<StackPanel.Resources>
<convert:InvertBooleanConverter x:Key="InvertConverter" />
</StackPanel.Resources>
<TextBox IsEnabled="{Binding IsChecked, ElementName=radio, Converter={StaticResource InvertConverter}}" />
<RadioButton x:Name="radio" IsChecked="True"/>
</StackPanel>
using System;
using System.Globalization;
using System.Windows;
using System.Windows.Data;
namespace MyApplication.Converters {
public sealed class InvertBooleanConverter : IValueConverter {
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) {
return !(bool)value;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) {
return DependencyProperty.UnsetValue;
}
}
}
@Picrofo : 4 개가 아닌 1 개의 공백으로 들여 쓰기를한다고해서 그것이 "향상된 서식"이라는 것을 의미하지는 않습니다. "코드 수정"은 대개 코드에서 실제로 변경 한 것을 의미합니다. – Patrick
죄송합니다. 나를위한 '고정 코드'는 코드 들여 쓰기 또는 언어가 변경되었음을 의미합니다. 귀하의 경우, 게시 한 첫 번째 코드는 XML 코드를 나타냅니다. 그래서 저는 언어를 단순히 C#에서 XML로 변경했습니다. 용서해주세요, 나는 당신의 게시물을 개선하려고 노력했습니다. 변경 사항을 검토하는 동안 내 수정 사항을 언제든지 거부 할 수 있습니다. 다시 미안 해요. 좋은 하루 되세요 :) –
@PicrofoEGY : 지금까지 언어 태그를 추가했다는 것을 실제로 보지 못했습니다 (개정 기록에 나타나지 않았으며 지금 클릭 한 "제안 된"링크에만 표시됨). 나는 그것이 추측되는 경우에 보통 그것을 추가하지 않는다. 그것은이 경우에 해당된다. 그리고 나는 그 변화를 나 자신도 받아들이지 않았다. 분명히 나를 위해 그것을 한 3 명의 다른 동료들이 있었다. – Patrick
어떻게 Multitriggers와 쓰기에 대한. –
Multibindings를 사용해 보았습니까? 그 경우 실패 했습니까? – Patrick