我的问题是WPF xaml代码不显示在屏幕上。应该做的是以下几点:
- 从MainViewModel获取列表
- 对于每个元素,它应该在内部创建一个文本块的边框
现在它似乎找到了列表和其中的所有元素。
下面是XAML代码:
<Window x:Class="MemoryUI.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:MemoryUI"
mc:Ignorable="d"
Title="Memory" Height="800" Width="900" ResizeMode="NoResize" d:DataContext="{d:DesignInstance Type=local:MainViewModel}">
<StackPanel x:Name="MainContainer" Orientation="Vertical">
<Border BorderBrush="Black" BorderThickness="3">
<Grid x:Name="GameGrid">
<ItemsControl ItemsSource="{Binding Cards}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="6"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border
Background="{Binding Background}"
Cursor="{Binding Cursor}"
Margin="{Binding Margin}"
Height="{Binding Height}"
Width="{Binding Width}"
MouseLeftButtonDown="CardClicked">
<TextBlock
Text="{Binding Icon.Text}"
Background="{Binding Icon.Background}"
Height="{Binding Icon.Height}"
Width="{Binding Icon.Width}"
Padding="{Binding Icon.Padding}"
FontSize="{Binding Icon.FontSize}"
Visibility="{Binding Icon.Visibility}"
TextAlignment="{Binding Icon.TextAlignment}">
</TextBlock>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
</Border>
</StackPanel>
</Window>
字符串
如果需要更多的上下文或代码,请告诉我,我会将其添加到帖子中。
1条答案
按热度按时间ttygqcqt1#
以下仅设置Visual Studio设计器使用的 * 设计时间 *
DataContext
:字符串
您还必须设置在运行时使用的实际
DataContext
属性。您可以在窗口的代码隐藏中执行此操作:型
或者在XAML标记中:
型
然后,假设
Cards
是返回IEnumerable
的MainViewModel
类的公共属性,那么到Cards
的绑定应该可以工作。Card
类的属性,或者不管你怎么称呼它,也必须是公共的,这样你在ItemTemplate
中的绑定才能像预期的那样工作。