依存関係プロパティを持つカスタム コントロールがあり、次のように定義されています。
public class TemplatedTextBox : TextBox
{
public static readonly DependencyProperty SearchStringProperty =
DependencyProperty.Register("SearchString", typeof(string), typeof(TemplatedTextBox), new UIPropertyMetadata(string.Empty));
public string SearchString
{
get { return (string)GetValue(SearchStringProperty); }
set { SetValue(SearchStringProperty, value); }
}
}
次のコントロール テンプレートを使用します。
<WpfApp:TemplatedTextBox>
<WpfApp:TemplatedTextBox.Template>
<ControlTemplate TargetType="{x:Type WpfApp:TemplatedTextBox}">
<StackPanel Height="20" Orientation="Horizontal">
<TextBlock Text="Search String :"/>
<TextBox x:Name="SearchTextBox" Width="200" Text="NEED TO BE BINDED TO SearchString!"/>
</StackPanel>
</ControlTemplate>
</WpfApp:TemplatedTextBox.Template>
</WpfApp:TemplatedTextBox>
またはバインド モードでSearchTextBox
のText
プロパティを自分のSearchString
プロパティにバインドします。OneWayToSource
TwoWay
私はもう試した:
Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=SearchString, Mode=OneWayToSource}"
これは何もしません。
Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=SearchString, Mode=TwoWay}"
と
Text="{TemplateBinding SearchString}"
プログラムでオンの変更を変更SearchString
すると、一方向ではうまく機能しますが、他の方法では機能しませんText
TextBox
SearchString
また、通常のプロパティを作成してRelativeSource
、あらゆる種類のMode
sで使用してバインドしようとしましたが、うまくいきませんでした。
これは、通常の View から ViewModel へのバインディングで行うのは非常に簡単なことですが、ここで何が欠けているのでしょうか?