给KinectTileButton添加属性

本文关键字:属性 添加 KinectTileButton | 更新日期: 2023-09-27 18:12:14

(vs express2012, WPF, net4.5)我是c#开发的新手。我目前正在使用kinect SDK 1.7开发一款windows应用

我想样式一个KinectTileButton在运行时,但不确定如何,我已经尝试了各种解决方案,但没有工作,我认为这可能是由于我缺乏c#知识,所以请提供答案的傻瓜。

xaml标记是:

<k:KinectTileButton Background="{x:Null}" 
    BorderThickness="3" Height="Auto" Margin="50,0" 
    BorderBrush="#FF181919" Width="Auto" />  

问题是KTB是在运行时动态创建的。在代码后面:

for (var index = 0; index < 300; ++index)
{
    var button = new KinectTileButton ();
    this.Width = Double.NaN;
    Image img = new Image();
    if (files[fileindex].FullName.EndsWith(".jpg"))
        img.Source = new BitmapImage(new Uri(files[fileindex].FullName));
    button.Content = img;
    this.wrapPanel.Children.Add(button);
    fileindex++;
    if (fileindex >= files.Length) 
        fileindex = 0;
}

我修改了代码,也许它可以帮助那些不擅长c#的微软kinect开发人员。

经过一些修补和一些帮助,这是我如何样式的KTB

var button = new KinectTileButton ();
button.Background = null; 
button.Margin = new Thickness(40); 
button.Height = Double.NaN; 
button.Width = Double.NaN;
button.BorderBrush = Brushes.Transparent;

给KinectTileButton添加属性

我不确定你在哪里创建你的KinectTileButtons,但我会在你的一个外部控件(Window)的代码背后的假设下工作。您可以在XAML中创建样式,然后使用FindResource(...)在代码隐藏中分配它。如果你这样做,你将能够重用多个按钮的样式。

XAML :

<Window>
    ...
    <Window.Resources>
        <Style x:Key="KinectButtonStyle" TargetType=k:KinectTileButton>
            <Setter Property="Margin" Value="40">
            <Setter Property="BorderBrush" Value="Transparent" />
            ...
        </Style>
    </Window.Resources>
</Window>
后台代码:

var button = new KinectTileButton
{
    Style = FindResource("KinectButtonStyle") as Style
}

事实上,如果您要从Style中删除Key,它将隐式应用,并且您不需要执行FindResource(...)查找。我不知道你是否愿意。