DataBindingを使用するとランタイムエラーが発生し、私は狂ってしまいます。私は定義したシンプルなUserControlを持っています。それをSillyControlと呼ぶことにしましょう。 SillyListBox.ItemsSource = myObjects;
は、リストボックスには、なるようにXAMLで定義されています:UserControlにバインドするとManagedRuntimeErrorが発生します
<ListBox x:Name="SillyListBox">
<ListBox.ItemTemplate>
<DataTemplate>
<MyControls:SillyControl TestString="{Binding Name}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
、オブジェクトが追加されるたびにこれとは別に、私はコレクション
ObservableCollection<MyClass> myObjects;
を介してこれのObservableCollectionにバインドされているSillyListBoxと呼ばれるリストボックスを持っていますコレクションmyObjects
に新しいSillyControlをListBoxに追加し、そのSillyControlのプロパティTestString
を、それが表すMyClass
オブジェクトのName
プロパティにバインドする必要があります。
これは機能しません。それはうまくコンパイルされますが、プログラムを実行すると、System.Windows.Markup.XamlParseExceptionという厄介なランタイムエラーが発生し、その下にAG_E_PARSER_BAD_PROPERTY_VALUEという名前が付けられます。
ここで、単純にBindingを削除した場合、TestStringに固定値を指定します。たとえば、の場合、エラーは消えます。また、SillyControlの代わりにTextBlockコントロールを定義し、それにバインディングを使用することもできます。地球上でこれが起こるのは何ですか?
更新:要求されたとして、ここSillyControlが定義されている方法です。
public partial class SillyControl : UserControl
{
private string testString;
public string TestString
{
get { return testString; }
set { testString = value; }
}
public SillyControl()
{
InitializeComponent();
}
}
XAMLは本当にベアボーンです。私はデフォルトのXAMLを使用しているので、それは空のGrid以上のものではありません。
更新2:私はvery simple test projectをダウンロードして問題を再現しました。
SillyControlの詳細を知る必要があります。 XamlパーサーがコントロールのTestStringというプロパティを見つけられません。 – AnthonyWJones
フィードバックいただきありがとうございます。私は質問を更新しました。 – JubJub