我碰巧需要将Grid绑定DataContext
到listview的SelectedItem
属性
我可以毫无问题地执行此操作....但是,由于Listview SelectedItem
存储了一个对象,因此XAML编辑器不知道它正在使用的类型,这会导致显示以下警告:"无法解析数据上下文中的属性X类型'对象'"
有没有办法在其中一个绑定中指定哪个类型的对象是(我搜索了WPF转换,但没有找到相关的资源)
这是我的XAML的相关摘录:
<ListView x:Name="ListView" ItemsSource="{Binding LoginScreens}" Grid.Column="0" Grid.Row="0" SelectionMode="Single"/>
<Grid Grid.Column="1" Grid.Row="0" DataContext="{Binding SelectedItem, ElementName=ListView}">
<Grid.RowDefinitions>
/*rows*/
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
/*Columns*/
</Grid.ColumnDefinitions>
<TextBox Grid.Row="0" Grid.Column="1" Style="{StaticResource TextBoxStyle}" Text="{Binding Name}"/>
<TextBox Grid.Row="1" Grid.Column="1" Style="{StaticResource TextBoxStyle}" Text="{Binding NameFr}"/>
<TextBox Grid.Row="2" Grid.Column="1" Style="{StaticResource TextBoxStyle}" IsEnabled="False" Text="{Binding Filename}"/>
<TextBox Grid.Row="3" Grid.Column="1" Style="{StaticResource TextBoxStyle}" IsEnabled="False" Text="{Binding SHA1}"/>
</Grid>
Run Code Online (Sandbox Code Playgroud)
我在TextBox的绑定中尝试了以下语法,但这些语法不起作用:
<TextBox Grid.Row="0" Grid.Column="1" Style="{StaticResource TextBoxStyle}" Text="{Binding (manifestEditor:LoginScreen.Filename)}"/>
Run Code Online (Sandbox Code Playgroud)
但是它导致在ListDictionary中关于一个键为null的错误,所以要么我缺少某些东西,要么它不是正确的方法.
编辑:
我希望尽可能只使用XAML来处理这个问题
你的代码对我来说很好.只是在这里添加一些新的和有用的东西是另一种定义与SelectedItem绑定的方法:
<Grid>
<StackPanel>
<ListView x:Name="ListView" ItemsSource="{Binding LoginScreens}"
IsSynchronizedWithCurrentItem="True"
SelectionMode="Single"/>
<Grid DataContext="{Binding LoginScreens}">
<StackPanel>
<TextBox Grid.Row="0" Grid.Column="1" Text="{Binding Name}"/>
<TextBox Grid.Row="1" Grid.Column="1" Text="{Binding NameFr}"/>
<TextBox Grid.Row="2" Grid.Column="1" IsEnabled="False" Text="{Binding Filename}"/>
<TextBox Grid.Row="3" Grid.Column="1" IsEnabled="False" Text="{Binding SHA1}"/>
</StackPanel>
</Grid>
</StackPanel>
</Grid>
Run Code Online (Sandbox Code Playgroud)
IsSynchronizedWithCurrentItem将绑定集合的默认CollectionView的CurrentItem与控件的SelectedItem同步,并通过选择Grid的DataContext作为ObservableCollection LoginScreens,您将根据ListView选择获取更新.
归档时间: |
|
查看次数: |
1020 次 |
最近记录: |