C # WPF два разных DataContext в One Control при использовании MVVM и свойство secound каждый раз одинаково - PullRequest
0 голосов
/ 11 мая 2011

Сначала код:

<ListView ItemsSource="{Binding DataTransferModel.Output}" Background="Transparent" Margin="0" VerticalContentAlignment="Top" AlternationCount="2" Name="lvOutput" ScrollViewer.VerticalScrollBarVisibility="Auto" Grid.Row="2">
    <ListView.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal" Margin="0,1">
                <UserControls:OutputTextBox Text="{Binding Data, Mode=OneWay}" 
                                            IsReadOnly="True" 
                                            Grid.Row="2" 
                                            TextWrapping="WrapWithOverflow" 
                                            SelectedValue="{Binding Path=DataContext.SelectedOutput, 
                                                            Mode=TwoWay, 
                                                            UpdateSourceTrigger=PropertyChanged, 
                                                            RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Grid}}
                                                            }" 
                                            />
            </StackPanel>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

И проблема в том, что свойство Data в элементе управления OutputTextBox происходит из списка, но свойство SelectedOutput должно исходить из основного DataContext ViewModel.И свойство SelectedOutput должно быть одинаковым для каждой записи в списке.Но в настоящее время это не работает.(

1 Ответ

0 голосов
/ 11 мая 2011

заключен ли ваш список в теги и если да, имеет ли сетка DataContext из ViewModel?если да, это должно работать.

видите ли вы какие-либо ошибки привязки в окне вывода?возможно, вам следует попробовать использовать Snoop , чтобы увидеть реальную привязку SelectedValue.

РЕДАКТИРОВАТЬ: пожалуйста, попробуйте тип, отличный от Grid, может быть ListView, если он имеет ViewModel DataContext.

<UserControls:OutputTextBox Text="{Binding Data, Mode=OneWay}" 
                                        IsReadOnly="True" 
                                        Grid.Row="2" 
                                        TextWrapping="WrapWithOverflow" 
                                        SelectedValue="{Binding Path=DataContext.SelectedOutput, 
                                                        Mode=TwoWay, 
                                                        UpdateSourceTrigger=PropertyChanged, 
                                                        RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}
                                                        }" 
                                        />
...