2013-01-18 89 views
4

我正在經歷艱難的時間才能使其工作。該代碼位於MVVM應用程序中,我將ViewModel中的屬性綁定到單選按鈕。列表框中的水平單選按鈕

我想實現這個SO回答https://stackoverflow.com/a/2285732

一切正常,只是按鈕垂直堆疊。現在,這看起來很簡單,只需修改ItemsPanelTemplate即可。

這裏是我的代碼:

<ListBox ItemsSource="{Binding ItemOptions}" SelectedItem="{Binding SelectedOption}"> 
    <ListBox.ItemsPanel> 
      <ItemsPanelTemplate> 
       <StackPanel Orientation="Horizontal" IsItemsHost="True" /> 
      </ItemsPanelTemplate> 
    </ListBox.ItemsPanel> 
    <ListBox.ItemContainerStyle> 
      <Style TargetType="{x:Type ListBoxItem}"> 
       <Setter Property="Template"> 
        <Setter.Value> 
         <ControlTemplate TargetType="{x:Type ListBoxItem}" > 
          <RadioButton Content="{TemplateBinding Content}" 
           IsChecked="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=IsSelected}"/> 
         </ControlTemplate> 
        </Setter.Value> 
       </Setter> 
      </Style> 
    </ListBox.ItemContainerStyle> 
</ListBox> 

然而,項目將保留垂直堆疊。任何想法爲什麼這對列表框的方向沒有影響?我錯過了什麼?

感謝, 傑裏

+0

我剛剛複製並粘貼了你的XAML和F5,它工作正常。項目水平堆疊。你使用哪個.Net版本? –

+0

針對.NET 4.0 –

+0

然後我不明白...我也使用4.0,和我的電腦相同的確切XAML工作正常.... –

回答

2

試試這個:

  <ListBox.Template> 
       <ControlTemplate TargetType="{x:Type ListBox}"> 
         <ScrollViewer x:Name="scrollviewer" HorizontalScrollBarVisibility="Visible" CanContentScroll="False"> 
         <StackPanel IsItemsHost="True" Orientation="Horizontal" /> 
         </ScrollViewer> 
       </ControlTemplate> 
      </ListBox.Template> 

我試圖獲得與ItemsPanelTemplate這個工作,像你一樣,都沒有成功。這對我很好,希望它也能幫助你!

Regards

+0

是的 - 那是有效的。感謝您的快速幫助。 –