WPF XAML列表框按钮单击不会更改ListView选定的索引
问题描述:
我有一个列表框和列表框内我有按钮作为项目。 当我点击一个按钮时,我所选的ListBox索引不会改变。WPF XAML列表框按钮单击不会更改ListView选定的索引
这是我的代码。请指教。
<ListBox HorizontalAlignment="Left" Height="452" Margin="5.331,12.332,0,0" VerticalAlignment="Top" Width="128.667" SelectionChanged="ListBox_SelectionChanged">
<Button Content="Theme1" >
<Button.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF000000" Offset="0"/>
<GradientStop Color="#15FFFFFF" Offset="1"/>
</LinearGradientBrush>
</Button.Background>
</Button>
<Button Content="Theme2" >
<Button.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF000000" Offset="0"/>
<GradientStop Color="#15FFFFFF" Offset="1"/>
</LinearGradientBrush>
</Button.Background>
</Button>
<Button Content="Theme3" >
<Button.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF000000" Offset="0"/>
<GradientStop Color="#15FFFFFF" Offset="1"/>
</LinearGradientBrush>
</Button.Background>
</Button>
</ListBox>
答
不完全确定你想要完成什么......但是这将完成我认为你正在尝试做的事情。这不是我应该怎样做,但如果它的东西很简单,它做什么,你问:
<ListBox SelectedItem="{Binding SelectedItem}" ItemsSource="{Binding Buttons}" SelectionChanged="ListBox_SelectionChanged">
<ListBox.ItemTemplate>
<DataTemplate>
<Button Content="{Binding .}" Click="Button_Click">
<Button.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF000000" Offset="0"/>
<GradientStop Color="#15FFFFFF" Offset="1"/>
</LinearGradientBrush>
</Button.Background>
</Button>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window, INotifyPropertyChanged
{
public MainWindow()
{
InitializeComponent();
Buttons = new List<string> { "Theme 1", "Theme 2", "Theme 3" };
this.DataContext = this;
}
private string _selectedItem;
public string SelectedItem
{
get { return _selectedItem; }
set
{
_selectedItem = value;
FirePropertyChanged("SelectedItem");
}
}
private List<string> _buttons;
public List<string> Buttons
{
get { return _buttons; }
set
{
_buttons = value;
FirePropertyChanged("Buttons");
}
}
#region INotifyPropertyChange
public event PropertyChangedEventHandler PropertyChanged;
protected void FirePropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
#endregion
private void Button_Click(object sender, RoutedEventArgs e)
{
Button b = sender as Button;
if (b != null)
{
SelectedItem = b.Content as string;
}
}
private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
}
}
+0
谢谢你的专业答案。这是我需要的。谢谢!!! – developergg 2014-12-02 16:41:45
也需要看到背后 – Stunna 2014-12-02 16:22:42
另外你的代码ListBox_SelectionChanged功能,是你希望的按钮触发选择更改? – Stunna 2014-12-02 16:24:08
我还没有ListBox_SelectionChanged函数。我需要在适当的按钮点击更改选定的项目。 – developergg 2014-12-02 16:35:18