0

MVVM パターンを使用して、エントリログをテキストブロックにバインドしています。

<Window.DataContext>
        <viewModel:WindowsEventsAutoMountViewModel x:Name="xWindowsEventsDetail"/>
    </Window.DataContext>
    <TextBlock x:Name="xCategoryTextBox" Grid.Column="1"  Grid.Row="0" TextAlignment="Center" Text="{Binding Path= xWindowsEventsDetail.Event.Category}"/> 

            <Label Grid.Row="1" Grid.Column="0" Content="{x:Static res:RecoveryManagerResources.EventDetailViewLabel_Level}" Name="xlabelLevel" ContentStringFormat="{}{0}:"/>
            <TextBlock x:Name="xLevelTextBox" Grid.Column="1"  Grid.Row="1" TextAlignment="Center" Text="{Binding Path= xWindowsEventsDetail.Event.Level}"/>

他の分野も

しかし、フィールドに値がありません

前もって感謝します

4

2 に答える 2

0

WindowsEventsAutoMountViewModel がクラスであり、DataContext に設定されている場合、バインディングは既定でそのクラスの子を参照します。

たとえば、クラスが次のように宣言している場合:

public class WindowsEventsAutoMountViewModel
{
    public string Name { get; set; }
}

次のようにバインドします。

{Binding Path=Name}

DataContext に設定されている限り。基本的に、バインディングから「xWindowsEventsDetail」を削除します。

DataContext ではないリソースにバインドする場合は、リソースへのバインドで Source プロパティを設定します。

{Binding Path=Name, Source={StaticResource xWindowsEventsDetail}}

DataContext を使用すると、2 番目の部分を指定する必要がなくなります。

于 2012-06-06T15:29:32.040 に答える
0

あなたのパスは間違っています。要素ではなく、DataContext に直接バインドする必要があります。

<Window.DataContext>
        <viewModel:WindowsEventsAutoMountViewModel x:Name="xWindowsEventsDetail"/>
    </Window.DataContext>
    <TextBlock x:Name="xCategoryTextBox" Grid.Column="1"  Grid.Row="0" TextAlignment="Center" Text="{Binding Path=Event.Category}"/> 

            <Label Grid.Row="1" Grid.Column="0" Content="{x:Static res:RecoveryManagerResources.EventDetailViewLabel_Level}" Name="xlabelLevel" ContentStringFormat="{}{0}:"/>
            <TextBlock x:Name="xLevelTextBox" Grid.Column="1"  Grid.Row="1" TextAlignment="Center" Text="{Binding Path=Event.Level}"/>
于 2012-06-06T15:30:16.190 に答える