您好我还有WPF控件的另一个问题。我有一个代码:
<ListBox Margin="0, 5, 0, 0" ItemsSource="{Binding mySource, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" SelectionMode="Single">
<ListBox.ItemTemplate>
<DataTemplate>
<!-- Rabio template -->
<RadioButton GroupName="radiosGroup"
Margin="10, 2, 5, 2"
Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=DataContext.SelectedSetting}"
CommandParameter="{Binding SomeId, Mode=OneWay}"
Content="{Binding FileNameWithoutExtensions, Mode=OneWay}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
问题在于,当我点击RadioButton
或其标签时,它会被选中。那样就好。但ListBoxItem
宽度大于整个RadioButton
点击区域,当我点击控件右侧时,ListBoxItem
会选择,但其子RadioButton
不会。以及如何扩展RadioButton
点击区域?
我尝试过的一个想法是添加Label
作为RadioButton
内容。这不是最好的主意,因为它使我的应用程序运行缓慢。
答案 0 :(得分:2)
试试这个:
<ListBox Margin="0,5,0,0" ItemsSource="{Binding mySource, Mode=OneWay,
UpdateSourceTrigger=PropertyChanged}" SelectionMode="Single"
HorizontalContentAlignment="Stretch"> <!-- New Property Added Here -->
<ListBox.ItemTemplate>
<DataTemplate>
<!-- Rabio template -->
<RadioButton GroupName="radiosGroup"
Margin="10, 2, 5, 2"
Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=DataContext.SelectedSetting}"
CommandParameter="{Binding SomeId, Mode=OneWay}"
Content="{Binding FileNameWithoutExtensions, Mode=OneWay}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
你说:
不幸的是,这不起作用
不幸的是,你错了。我已经简化了示例并且刚刚测试了它的完美运行(至少在Visual Studio 2010和.NET 4中):
<ListBox ItemsSource="{Binding Collection}" HorizontalContentAlignment="Stretch">
<ListBox.ItemTemplate>
<DataTemplate>
<RadioButton GroupName="Group" Content="{Binding SomeProperty}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
只需在新项目中尝试使用此代码,您就会发现 按预期工作。因此,如果它在您当前的项目中不起作用,那么您有一些其他代码与此ListBox
有些冲突。不幸的是,我无能为力。