如何指定Datacontext无法理解

时间:2012-04-18 01:42:32

标签: wpf mvvm

mMaterialCentreGroupListView.xaml文件中,此行是为MaterialCentreGroupView编写的。但我看不到任何用于访问viewmodel属性的数据上下文。它运作良好。下面是代码。

<vw:MaterialCentreGroupView
            Style="{StaticResource DetailedViewStyle}"
            DataContext="{Binding SelectedMaterialCentreGroup}"/>

视图

<UserControl x:Class="MyBooks.View.MaterialCentreGroupView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
MinWidth="290" MaxWidth="290" Padding="20"
Background="#eee">

<UserControl.Resources>
    <ResourceDictionary Source="ViewResources.xaml" />
</UserControl.Resources>

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>

    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>

    <Label
        Grid.Row="0" Grid.Column="0"
        Content="{Resx ResxName=MyBooks.Properties.Strings, Key=AccountCategoryListView_Name_Label}"
        HorizontalAlignment="Right"/>
    <TextBox
        x:Name="CategoryName"
        MaxLength="50"
        Style="{StaticResource FormControlStyle}"
        Grid.Row="0" Grid.Column="1" Grid.ColumnSpan="2"
        Text="{Binding Path=Name, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged}"/>

请向我解释发生了什么以及如何发生约束?

2 个答案:

答案 0 :(得分:1)

我认为DataContext要么在代码隐藏中设置(文件名称与.xaml文件相同,但扩展名为.cs)。寻找像DataContext = new SomeViewModel();

这样的代码

或者,如果在另一个控件中使用此UserControl,可以在其上显式设置DataContext,否则,它将从其父级继承(可能从父级继承,也可能不从其父级继承),因此on,如果没有在XAML或代码隐藏中明确设置。)

答案 1 :(得分:0)

看'Resx'绑定

<Label 
    Grid.Row="0" Grid.Column="0" 
    Content="{Resx ResxName=MyBooks.Properties.Strings, Key=AccountCategoryListView_Name_Label}" 
    HorizontalAlignment="Right"/> 

有关resx绑定和使用的更多信息,请参阅以下链接 Resx binding and usage