<ListBox ItemsSource="{Binding XyzList}" BorderThickness="0" Background="Transparent">
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="IsSelected" Value="{Binding Path=IsSelected, Mode=TwoWay}" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<ContentPresenter/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Image Visibility="{Binding Stop}"
ToolTip="{Binding Stopp}"
HorizontalAlignment="Left"
Opacity="1" Width="11" Height="11"
Source=stop.png"/>
<RadioButton Content="{Binding Period}"
IsEnabled="{Binding Ok}"
IsChecked="{Binding IsSelected}"
Margin="20,0,0,0" HorizontalAlignment="Left"
Command="Views:ValjLeveransArende.PrCommand"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
当我第一次选择单选按钮时,它不会被选中,我得到正确的数据,但不会被选中。
当我第二次尝试时,它会被选中。
更多信息:
public class XyzList: WorkViewModelBase
{
private bool _isSelected;
public bool IsSelected
{
get { return _isSelected; }
set
{
_isSelected = value;
OnPropertyChanged(nameof(IsSelected));
}
}
}
然后当我填写其余数据时,我将其设置为
list.Add(new XyzList()
{
IsSelected = false
});
答案 0 :(得分:2)
看起来您将IsSelected
绑定在两个由同一用户操作触发的位置。相反,您应该只保留一个View-to-Viewmodel绑定并将不同的视图控件链接到另一个。
保持在ItemContainerStyle
:
<Setter Property="IsSelected" Value="{Binding Path=IsSelected, Mode=TwoWay}" />
RadioButton
:
IsChecked="{Binding IsSelected,RelativeSource={RelativeSource AncestorType=ListBoxItem}}"
另一个问题:您的radiobuttons不会表现得像是属于同一个组......如果您确实需要其功能,则可能需要使用RadioButton.GroupName
属性。但是,可以完全依靠ListBox
进行选择。