2012-12-03 3 views
0

라디오 단추와 체크 가능한 메뉴 항목이있는 콤보 상자가 있습니다. 값을 선택하면 라디오 버튼의 텍스트 (Include/Exclude/Ignore)가 표시됩니다. 이것은 무작위 적으로 발생하는 것으로 보이며 항상 발생하지는 않지만 때로는 발생합니다.WPF 콤보 상자에 MenuItems 및 라디오 단추가있는 텍스트 표시

내가 원하는 것은 a) 전혀 텍스트가 표시되지 않거나 b) 선택된 것의 요약을 포함하는 문자열 속성에 대한 바인딩을 가질 수 있습니다. 일반 조합 상자와 달리 여기에 표시된 텍스트는 의미가 없습니다. 임의의 조합을 선택했기 때문에 (목록에서 단일 값이 아님)

속성에 대해 Text/SelecteValue를 바인딩하려고했지만 작동하지 않습니다.

<ComboBox Grid.Column="2" HorizontalAlignment="Left" Margin="0,4,0,0" Grid.Row="3" VerticalAlignment="Top" Width="125" SelectedValue="{Binding Settings.NameFilterTrx.Summary, UpdateSourceTrigger=PropertyChanged, Mode=OneWay}"> 
    <MenuItem Header="Names with runway" IsCheckable="True" IsChecked="{Binding Settings.NameFilterTrx.NamesWithRunway, UpdateSourceTrigger=PropertyChanged}"/> 
    <MenuItem Header="Names with number" IsCheckable="True" IsChecked="{Binding Settings.NameFilterTrxNamesWithNumber, UpdateSourceTrigger=PropertyChanged}"/> 
    <MenuItem Header="Filtered elements as comments" IsCheckable="True" IsChecked="{Binding Settings.NameFilterTrx.FilteredAsComments, UpdateSourceTrigger=PropertyChanged}"/> 
    <RadioButton GroupName="Group" Content="Exclude" IsChecked="{Binding Settings.NameFilterTrx.ModeExclude, UpdateSourceTrigger=PropertyChanged}" Margin="10,2,0,3"/> 
    <RadioButton GroupName="Group" Content="Include" IsChecked="{Binding Settings.NameFilterTrx.ModeInclude, UpdateSourceTrigger=PropertyChanged}" Margin="10,2,0,3"/> 
    <RadioButton GroupName="Group" Content="Ignore" IsChecked="{Binding Settings.NameFilterTrx.ModeIgnore, UpdateSourceTrigger=PropertyChanged}" Margin="10,2,0,3"/> 
</ComboBox> 

텍스트에서 볼 수 있듯이 선택한 값과 일치하지 않습니다. 또한 라디오 버튼의 텍스트 만 무작위로 표시되며 절대로 메뉴 항목이 표시되지 않습니다.

Screenshot

추신 : SelectedValue에 대한 바인딩 정의 된 값을 얻을 내 산책로 중 하나입니다. Text뿐만 아니라 바인딩을 시도한 경우.

+2

왜 당신은 Expander를 사용하여 목표를 달성하지 않습니까? 그것은 콤보 박스처럼 보입니다. 그리고 당신은 콤보 박스의 선택된 값에 의해 괴롭혀지지 않을 것입니다. – Colin

+0

어쩌면 좋은 생각 일 겁니다. –

+1

Expander를 확장하면 부모 컨테이너의 크기가 변경 될 수 있습니다. 그래서 제가 일반적으로하는 일은 그리드에 넣고 여러 행과 열을 스팬으로 지정하는 것입니다. 그런 다음 확장기의 Z- 색인을 큰 값으로 설정합니다. 확장 된 Expander는 다른 컨트롤을 덮어 씌우고 부모 패널의 크기는 변경하지 않습니다. – Colin

답변

1

확장기를 사용하여 목표를 완전히 채울 수 있다고 생각합니다. 이 솔루션의 문제점은 확장기가 확장되면 부모 컨테이너의 크기가 변경 될 수 있다는 것입니다. 그래서 제가 일반적으로하는 일은 그리드에 넣고 여러 행과 열을 스팬으로 지정하는 것입니다. 그런 다음 확장기의 Z- 색인을 큰 값으로 설정합니다. 확장 된 Expander는 다른 컨트롤을 덮어 씌우고 부모 패널의 크기는 변경하지 않습니다. :)

+0

나는 당신의 접근 방식을 사용했고, 또한 같은 상황에 대한 메뉴를 시도했다. 두 가지 개념 모두 장단점이 있지만이 경우에는 콤보 상자보다 낫습니다. –

관련 문제