UWPアプリケーションでは、私はデータ型を持つListviewを持っています。 ListViewは、ItemsSource経由でモデルのObservableCollectionにバインドされます。DataTemplateのdatacontextプロパティをusercontrol依存関係プロパティにバインド
<ListView SelectionMode="None"
ItemTemplate="{StaticResource MydataTemplate}"
ItemsSource="{Binding Meals, Mode=OneWay}"
食事モデルミールのObservableCollectionである:
public class Meal
{
public string restaurantId { get; set; }
public double price { get; set; }
public int Quantity { get; set; } = 0;
}
内部リストビューDataTemplateを、私は(リストビューの各要素は、このユーザーコントロールを持っている)ユーザーコントロールを持っています。
<DataTemplate x:Key="mydataTemplate">
...
<ccontrol:MyUC Value="{Binding Quantity, Mode=TwoWay}" Grid.Column="2" />
...
</DataTemplate>
ユーザーコントロールDP付き::私は、ユーザーコントロールの依存proeprtyに、現在の食事量(数量プロパティ)をバインドしたい
public sealed partial class MyUC : UserControl
{
public MyUC()
{
this.InitializeComponent();
this.DataContext = this;
}
public int Value
{
get { return (int)GetValue(ValueProperty); }
set { SetValue(ValueProperty, value); }
}
// Using a DependencyProperty as the backing store for Value. This enables animation, styling, binding, etc...
public static readonly DependencyProperty ValueProperty =
DependencyProperty.Register("Value", typeof(int), typeof(ResaNumUpDown), new PropertyMetadata(0));
しかし、実行時に、私はバインディング式の誤差があります。
エラー:BindingExpressionパスエラー:「数量」プロパティ「Project.MyUC」
に見つからないことがユーザーコントロールを検索し、しかし、私は量Pを検索しますDataTemplateデータコンテキストでのルーティン。
I red this post多くの人を助けない人。あなたはMyUC
コンストラクタで行うように事前に
おかげで、
よろしく
おかげで、それが動作するようになりました:UserControlのXAMLで
は、それがのバインディングElementName
プロパティを指定することによって、そのソースとしてのUserControlを取るようにバインディングを書き込みます。 :) – ArthurCPPCLI