1

(与 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;
4

1 回答 1

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(...)查找。我不知道这是否适合你。

于 2013-05-06T20:47:51.807 回答