通过数据绑定将值传递给代码隐藏的WPF / C#

时间:2017-03-23 10:00:46

标签: c# wpf xaml data-binding path

我目前正在进行国际象棋游戏,我正在尝试将C#代码隐藏连接到XAML中的WPF界面。为了代表国际象棋棋盘,我创造了一个8x8的统一网格。 我想将方块的名称(网格的单元格)传递给后面的代码,然后让方法返回相应部分的图像的路径。例如,如果方形a8上有白车,则会将其保存在代码隐藏中。在xaml中,每个方块将通过其名称(例如“a8”)并接收白色车辆图像的路径。如果正方形上没有任何部分,则路径将链接到透明图像。这是我到目前为止所得到的:

<StackPanel Height="auto" Width="auto" Orientation="Vertical" Margin="-5,0,5,0" >
    <UniformGrid  Rows="8" Columns="8" Background="Black" Height="800" Width="800"  HorizontalAlignment="Stretch">
        <StackPanel Orientation="Vertical" Margin="1,1,1,1">
            <Image Source="Resources/WhiteSquare.png"/>
            <Image Source=""/>
            <!--{Bind path to method in code-behind; pass name (e.g. a8); function then returns path to appropriate image of piece-->
        </StackPanel>
    </UniformGrid>
</StackPanel>

我很感激我的xaml和c#的灵感。谢谢!

1 个答案:

答案 0 :(得分:1)

您应该查看MVVM设计模式:https://msdn.microsoft.com/en-us/library/hh848246.aspx。在构建基于XAML的UI应用程序时,它是 推荐的设计模式。

但是要将您在XAML标记中定义的元素的名称传递给代码隐藏,您可以处理元素的Loaded事件。例如,您可以将Tag的{​​{1}}属性设置为&#34; a8&#34;并且在代码隐藏中处理Image事件是这样的:

Loaded
<UniformGrid  Rows="8" Columns="8" Background="Black" Height="800" Width="800"  HorizontalAlignment="Stretch">
    <StackPanel Orientation="Vertical" Margin="1,1,1,1">
        <Image Source="Resources/WhiteSquare.png"/>
        <Image Tag="a8" Loaded="Img_Loaded" />
    </StackPanel>
</UniformGrid>