2011-12-09 9 views
0

私の値が静的このように、それを呼び出すXAMLで定義されている場合、正しく結合するカスタムUserControlの依存関係プロパティ:そこ私のカスタムUserControlの依存関係プロパティが動的バインドで機能しないのはなぜですか?

TextBoxText="{Binding ItemTypeIdCode}" 

:値は動的自体バインドされ

TextBoxText="myName" 

ではなく、場合私の完全なコードです。

カスタムユーザーコントロールのXAML:

<UserControl 
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" 
mc:Ignorable="d" 
x:Class="TestUserControl.UserControl1" 
DataContext="{Binding RelativeSource={RelativeSource Self}}" 
x:Name="UserControl" Height="22" Width="282"> 

<Grid x:Name="LayoutRoot"> 
    <TextBlock TextWrapping="Wrap" Text="{Binding MyName, ElementName=LayoutRoot}"/> 
</Grid> 

カスタムユーザーコントロールコード:私のメインウィンドウXAMLで

public static readonly DependencyProperty TextBoxTextProperty =DependencyProperty.Register("TextBoxText", typeof(string), typeof(UserControl1)); 

    public string TextBoxText 
    { 
     get { return (string)GetValue(TextBoxTextProperty); } 
     set { SetValue(TextBoxTextProperty, value); } 
    } 

:私のメインウィンドウコードで

<Grid x:Name="LayoutRoot"> 
    <Button Content="Button" Height="78" Margin="0,0,93,112" VerticalAlignment="Bottom" HorizontalAlignment="Right" Width="94" Click="MyButtonClick"/> 
    <ListBox x:Name="MyListBox" HorizontalAlignment="Left" Margin="8,8,0,112" Width="192"> 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <local:UserControl1 HorizontalAlignment="Stretch" Margin="286,37,56,0" VerticalAlignment="Top" d:LayoutOverrides="Height" TextBoxText="{Binding MyName}"/> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 
</Grid> 

このコードはListBoxItemとしてListBoxItemとして正常に追加されますが、問題は表示されません。バインドするテキストは表示されません。

私はどこで間違っているのか分かりません。

+0

は、それはあなたが ' 'の代わりに、{Binding MyName、ElementName = LayoutRoot}" /> – Tim

+0

私はそれをしますが、私の仲間はうまく動作しません。 – Vero009

+0

@ Vero009:みんなを "ブロー"と呼ぶべきではないと思うよ。... –

答えて

3

UserControlのDataContextをそれ自身に設定すると、すべてのバインディングがUserControlのパスを検索しようとします。そのため、UserControlsにDataContextを設定しないでください。あなたは、Visual Studioの[出力]ウィンドウで結合エラーのようなものを言って見るべき

System.Windows.Data Error: 40 : BindingExpression path error: 'ItemTypeIdCode' property not found on 'object' ''UserControl1' (Name='UserControl')'. ...

+0

これはいつも私をひっくり返す。私はいつも同じプロパティーに2つのバインディングがあるので、まずそれを考える。それから私は、 "額を叩く"瞬間を持っています。良い呼出し。H.B. – Tim

+0

これらの質問の最初のこと:DataContextを検索 –

+0

はい、私はVisual Studioの出力ウィンドウでそのバインディングエラーを見ました。今、私はそれをどのように解決できるのか教えていただけますか? – Vero009

関連する問題