2016-10-03 9 views
0

コンボボックスデバッガで選択を変更すると、UserクラスのTestSelectedItem {set}が表示されますが、MainWindowクラスのTestSelectedItem {set}にヒットします。正しい解決策を提案してください。WPFデータグリッドのコンボボックスの列の選択項目のデータバインディングC#

public class User 
{ 
    public string Name { get; set; } 
    public ObservableCollection<string> TypeCollection { get; set; }  

    private string _testSelectedItem; 
    public string TestSelectedItem 
    { 
     get { return _testSelectedItem; } 
     set { _testSelectedItem = value; } 
    } 

    public User() 
    { 
     TypeCollection = new ObservableCollection<string>(); 
     TypeCollection.Add("A"); 
     TypeCollection.Add("B"); 
     TypeCollection.Add("C"); 
    } 
} 

public partial class MainWindow : Window 
{ 
    public List<User> Users { get; set; } 

    private string _testSelectedItem; 
    public string TestSelectedItem 
    { 
     get { return _testSelectedItem; } 
     set { _testSelectedItem = value; } 
    } 

    public MainWindow() 
    { 
     InitializeComponent(); 
     Users = new List<User>(); 
     Users.Add(new User() { Name = "User 1" }); 
     Users.Add(new User() { Name = "User 2" }); 
     Users.Add(new User() { Name = "User 3" }); 
     myGrid.DataContext = this; 
    } 
} 

<Window x:Class="WpfApplication11.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:local="clr-namespace:WpfApplication11" 
    mc:Ignorable="d" 
    Title="MainWindow" Height="350" Width="525"> 
<Grid Name ="myGrid"> 
    <StackPanel> 

     <DataGrid Name="MyDataGrid" AutoGenerateColumns="False"    ItemsSource="{Binding Users}"> 

     <DataGrid.Columns>    

      <DataGridTextColumn Binding="{Binding Name}" 
           Header="Name" 
           Width="90" 
           CanUserResize="False" 
           CanUserSort="False" 
           CanUserReorder="False" 
           IsReadOnly="True" /> 

       <DataGridComboBoxColumn Header="Product Type" 
             DisplayMemberPath="ProductType" 
             SelectedValuePath="ProductTypeId" 
             SelectedValueBinding="{Binding SelectedValuePath, UpdateSourceTrigger=PropertyChanged}"> 

        <DataGridComboBoxColumn.ElementStyle> 
         <Style TargetType="{x:Type ComboBox}"> 
          <Setter Property="ItemsSource" Value="{Binding TypeCollection}"/> 
          <Setter Property="VerticalAlignment" Value="Center"/> 
         </Style> 
        </DataGridComboBoxColumn.ElementStyle> 

        <DataGridComboBoxColumn.EditingElementStyle> 
         <Style TargetType="{x:Type ComboBox}"> 
          <Setter Property="ItemsSource" Value="{Binding TypeCollection}"/> 
          <Setter Property="VerticalAlignment" Value="Center"/> 
         </Style> 
        </DataGridComboBoxColumn.EditingElementStyle> 
       </DataGridComboBoxColumn> 

       <DataGridTemplateColumn Header="Bug"> 
        <DataGridTemplateColumn.CellTemplate > 
         <DataTemplate> 
          <ComboBox Height="25" Width="200" 
             x:Name ="ppCombo" 
             ItemsSource="{Binding TypeCollection }" 
             SelectedItem="{Binding TestSelectedItem ,Mode=TwoWay ,UpdateSourceTrigger=PropertyChanged}"> 
          </ComboBox> 

         </DataTemplate> 
        </DataGridTemplateColumn.CellTemplate> 
       </DataGridTemplateColumn> 
      </DataGrid.Columns> 

     </DataGrid>   

     </StackPanel> 

    </Grid> 
</Window> 

答えて

0

は、私はちょうど解決策を見つけたと思うが、確かではありません正しいもの

のSelectedItem = "{RelativeSource = {RelativeSource FindAncestor、AncestorType = {X結合は:タイプローカル:メインウィンドウを}}、パス= TestSelectedItem} ">

関連する問題