を動作しません。私はこのようにそれをバインドしたいときには:のDataContext親のへの結合カスタムコントロールのDataContextは、私はこのような正常に動作<strong>カスタムコントローラ</strong>を持って
<ScrollViewer DataContext="{Binding SHVM.Selected}">
<Controller:DLBox ID="{Binding ID}" />
</ScrollViewer>
、それはまったく動作しません。私は他のいくつかを持っていますカスタムコントローラーと彼らはうまくやっていますが、私は地獄がこの1つの問題であるか分からない!
これはコントローラです:
public partial class DLBox : UserControl
{
public static DependencyProperty IDProperty =
DependencyProperty.Register("ID", typeof(int), typeof(DLBox),
new FrameworkPropertyMetadata(0,FrameworkPropertyMetadataOptions.BindsTwoWayByDefault,
(o, e) => (o as DLBox).IDPropertyChanged((int)e.NewValue)));
public int ID { get; set; }
private void IDPropertyChanged(int e)
{
ID = e;
}
}
誰かが私が間違っ何を教えていただけますか?私は6時間連続してデバッグしているので、何も見つかりませんでした!どうもありがとう。
UPDATE: 追加するだけで働いていた:
<... DataContext={Binding} .../>
そして、私は理由を知りません!
実際の問題は、私が内部でこれを使用したいということです。ItemsControlsでも、DataContextはまだ動作しません。
(ただ、明確化のために、私は10校最初のリストのような最初のものについて考えてみて。お互いの内側2つのリストを持っており、各学校内でいくつかのstudens 第二のリストがある)
<ItemsControl ItemsSource="{Binding Source={StaticResource Locator}, Path=SHVM.Extra.Items}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<ItemsControl DataContext="{Binding}" ItemsSource="{Binding Items}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Controller:DLBox DataContext="{Binding}" ID="{Binding ID}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
<ItemsControl.ItemTemplate>
</ItemsControl>
更新2: IDはTextBlock
で、UserControl
です。私がここに示すことは何もありません!
ちょうど(私のコントローラ内でMVVMを使用していない)PropertyCallBack内TextBlock
のテキストを設定し、私が行ったすべての、:
<TextBlock x:Name="txtIDValue"/>
そして、分離コード内部:
private void IDPropertyChanged(string e)
{
ID= e;
txtIDValue.Text = e;
}
関連するものは何もありませんこの問題に、それが私がそれを理解できなかった理由です!
ありがとうございます。
回答: それに取り組んだ12時間後、私は愚かな間違いでした!なぜ私がコントローラーにDataContext
を設定したのか分かりませんXAML!とにかく、ありがとう。
をする場合には、 'o'ではないので、あなたは、'(DLBoxとしてO).IDPropertyChanged(...) 'のような何かを行うべきではありません'DLBox'では、' InvalidCastException'をエクスクルードする間、間違って 'NullReferenceException'を投げます。式は代わりに '((DLBox)o).IDPropertyChanged(...)'でなければなりません。とにかく、それはまったく必要ありません。 – Clemens
あなたのDataContextを明示的に設定する、 'DLBox'には何かがありますか? 'DataContext = this;'コンストラクタでは? – Clemens
@クレメンスノープ!私もそれを設定する必要がありますか?私はそれについて知らなかった。 **編集:**それは動作しませんが! – Mostafa