我如何使用数组从代码在xaml文件?c#

本文关键字:xaml 文件 代码 何使用 数组 | 更新日期: 2023-09-27 18:14:49

我正在使用混合动画。
我创建了一个故事板,它将按钮的边距更改为与放置在网格上的55个文本框之一完全相同的位置。
动画应该将按钮移动到55个文本框中的一个,这取决于我点击了哪个文本框
我创建了一个包含55个文本框的所有边距的数组,现在我想在xaml.
中使用这个数组。我试着使用资源。添加和StaticResource但不工作

我如何使用数组从代码在xaml文件?c#

在XAML中使用数组是很简单的:首先你声明你的margin数组作为你的Window的公共属性:

public Thickness[] MyArray { get; set; }

然后在Window构造函数中初始化它:

MyArray = new Thickness[50];
MyArray[0] = new Thickness(5, 5, 5, 5);
MyArray[1] = new Thickness(10, 10, 10, 10);
// ...
DataContext = this;

然后将按钮的Margin属性绑定到数组的每个元素:

<TextBox x:Name="TextBox1" Margin="{Binding MyArray[0]}" />
<TextBox x:Name="TextBox2" Margin="{Binding MyArray[1]}" />

无论如何,这是一个更好的主意,使用ObservableCollection而不是Array,因为否则你的视图将不会被通知你的数组内所做的变化从后面的代码:

public ObservableCollection<Thickness> MyCollection { get; set; }
public MainWindow()
{
    InitializeComponent();
    MyCollection = new ObservableCollection<Thickness>();
    MyCollection.Add(new Thickness(5, 5, 5, 5));
    MyCollection.Add(new Thickness(10, 10, 10, 10));
    // ...
    DataContext = this;
}

在XAML中,绑定保持不变:

<TextBox x:Name="TextBox1" Margin="{Binding MyCollection[0]}" />
<TextBox x:Name="TextBox2" Margin="{Binding MyCollection[1]}" />