2014-10-22 3 views
-4

В чем моя проблема? Это не работает (MVVM)DependencyProperty как?

Я получаю пустое текстовое окно и при изменении текстового поля текста OnCurrentReadingChanged не называется

namespace Test 
{ 
    public partial class MainWindow : Window 
    { 
    public MainWindow() 
    { 
     DataContext = new BaseModel();  
     this.InitializeComponent();   
    } 
    public static DependencyProperty ImgPositionProperty = DependencyProperty.Register("ImgPosition", typeof(string), typeof(MainWindow), 
    new PropertyMetadata("ddd", new PropertyChangedCallback(OnCurrentReadingChanged))); 

    private static void OnCurrentReadingChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) 
    { 
     MessageBox.Show("1"); 
    } 
    } 
} 

<Window xmlns:View="clr-namespace:Test"> 
    <Grid x:Name="LayoutRoot"> 
    <TextBox Margin="141,81,254,0" TextWrapping="Wrap" Text="{Binding View:MainWindow.ImgPosition, UpdateSourceTrigger=PropertyChanged}" VerticalAlignment="Top"/> 
    </Grid> 
</Window> 
+0

Не могли бы вы рассказать мне, в чем проблема? Это похоже на то, что вы не можете получить свойство dependency в XAML? – jadavparesh06

+0

@ jadavparesh06, да, я получаю пустое текстовое поле и когда меняю текст текстового поля OnCurrentReadingChanged не называется – Risa

ответ

1

Если привязка к DependencyProperty на MainWindow не ваш DataContext вы можете использовать ' FindAncestor '

<TextBox Text="{Binding ImgPosition, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type View:MainWindow}}, UpdateSourceTrigger=PropertyChanged}" /> 
+0

omg, спасибо! Спасибо большое! – Risa

+0

, но как насчет этого? <Свойство сеттера = "Вид: TunnelDisplay.ImgPosition" Value = "1" /> – Risa

Смежные вопросы