2014-12-02 73 views
0

我有一个列表框和列表框内我有按钮作为项目。 当我点击一个按钮时,我所选的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> 
+0

也需要看到背后 – Stunna 2014-12-02 16:22:42

+0

另外你的代码ListBox_SelectionChanged功能,是你希望的按钮触发选择更改? – Stunna 2014-12-02 16:24:08

+0

我还没有ListBox_SelectionChanged函数。我需要在适当的按钮点击更改选定的项目。 – developergg 2014-12-02 16:35:18

回答

1

不完全确定你想要完成什么......但是这将完成我认为你正在尝试做的事情。这不是我应该怎样做,但如果它的东西很简单,它做什么,你问:

<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

相关问题