0

DataGrid SelectedItemユーザーコントロールの内部をにバインドしたいのですがDependencyProperty 、これが私のコードです。

ユーザーcontrol(DataGridControl)で:

        public static readonly DependencyProperty DataGridSelectedItemProperty
        = DependencyProperty.Register(
        "DataGridSelectedItem"
        , typeof(object)
        , typeof(DataGridSelectorControl)
        , new UIPropertyMetadata(null));

    public object DataGridSelectedItem
    {
        get { return (object)GetValue(DataGridSelectedItemProperty); }
        set { SetValue(DataGridSelectedItemProperty, value); }
    }

  <DataGrid ItemsSource="{Binding Source={StaticResource theSource}}" 
           SelectedItem="{Binding ElementName=DataGridControl,Path=DataGridSelectedItem,UpdateSourceTrigger=PropertyChanged}"  />

そしてビューモデルで:

    object projectSelectedItem;
    public object ProjectSelectedItem
    {
        get
        {
            return projectSelectedItem;
        }
        set
        {
            projectSelectedItem = value;
            RaisePropertyChanged("ProjectSelectedItem");
        }
    }

とビューで:

<MvvmCommonControl:DataGridControl  DataGridSelectedItem="{Binding ProjectSelectedItem}"  DataGridDataCollection="{Binding DataCollection}"/>

しかし、それは機能しません!!

4

2 に答える 2

0

ユーザーコントロールには次のものがあります。

 SelectedItem="{Binding ElementName=DataGridControl,

しかし、あなたは名前の付いたユーザーコントロールDataGridControlですか?

<UserControl
  ...
  x:Name="DataGridControl">
于 2012-06-05T11:03:29.520 に答える
0

Xamlでは、以下のコードを使用します

<DataGrid ItemsSource="{Binding Path=Person,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" AutoGenerateColumns="False"   SelectedItem="{Binding Path=SelectedItem, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">

ViewModelで、選択したアイテムのプロパティを作成します。ここで、Customerは、Address、Name、OrderIDなどのプロパティを持つクラスです。

private Customer selectedItem = new Customer();

        public Customer SelectedItem
        {

            get
            { return selectedItem; }
            set
            {
                selectedItem = value;
                InvokePropertyChanged("SelectedItem");
             }                 
        }

依存関係プロパティを定義するクラスを1つ作成します

class DataGridSelectedItemBehaviour:DependencyObject
    {
        public static readonly DependencyProperty SelectedItemProperty
        = DependencyProperty.Register(
        "SelectedItem"
        , typeof(object)
        , typeof(CustomerViewModel)
        , new UIPropertyMetadata(null));

        public object SelectedItem
        {
            get { return (object)GetValue(SelectedItemProperty); }
            set { SetValue(SelectedItemProperty, value); }
        }

    }
于 2014-05-28T09:00:59.077 に答える