Хотя ваш ответ выше (с автоответчиком), похоже, решает проблему, я не могу не думать, что это проблема проблемной области.Мне трудно подумать , почему вы бы хотели связать напрямую, в первую очередь, так как это дает вам меньше контроля над тем, что происходит с данными.
Примите следующее:
<UserControl
x:Class="SilverlightApplication1.XText"
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:Name="UserControl"
d:DesignHeight="300"
d:DesignWidth="400">
<Grid x:Name="LayoutRoot" Background="White">
<TextBox x:Name="Text" Text="{Binding Path=Value, ElementName=UserControl, Mode=TwoWay}"/>
</Grid>
</UserControl>
Затем в коде:
public partial class XText
{
public static DependencyProperty ValueProperty =
DependencyProperty.Register(
"Value",
typeof(string),
typeof(XText),
new FrameworkPropertyMetadata(null)
);
public string Value
{
get { return ((string)(base.GetValue(XText.ValueProperty))); }
set { base.SetValue(XText.ValueProperty, value); }
}
...
}
Затем, когда вы будете готовы его использовать:
<uc:XText Value="{Binding Path=MyObject, Mode=TwoWay}" />
Да, это больше кода,но это дает вам гораздо больший контроль над тем, что происходит с Value
внутри вашего UserControl
, и значительно упрощает работу с этим кодом в будущем.
Мысли?
-Doug
EDIT: исправлено несколько опечаток.