将属性添加到KinectTileButton

时间:2013-05-06 12:45:08

标签: c# wpf wpf-controls kinect

(vs express2012,WPF,.net4.5) 我是C#开发的新手。 我目前正在使用kinect SDK 1.7开发一个Windows应用程序

我想在运行时设置KinectTileButton样式,但不确定如何,我已经尝试了在Stack上找到的各种解决方案,但没有一个有效,我假设这可能是由于我缺乏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;
}

我修改了代码,也许它可以帮助那些使用MS kinect开发并且在C#上表现不佳的人。

经过一点点的修修补补,这就是我设计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;

1 个答案:

答案 0 :(得分:0)

我不确定你在哪里创建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
}

事实上,如果您要从Key中删除Style,则会隐式应用它,您不需要执行FindResource(...)查找。我不知道这对你是否可取。