现在,我的目标是根据最终应用程序中稍后传入的动态值生成许多开关,这些值稍后可能还会更改。
我写了一个小片段来测试。在这里尝试了CustomSwitch类,该类具有一些用于命名的额外属性,然后根据列表中的条目数以编程方式添加开关。
问题是,稍后,我将无法跟踪实现该开关的“切换属性”状态,因为我无法动态添加不同的变量名(或者可以i?)到动态生成的交换机。
public MainPage()
{
InitializeComponent();
List<testObject> testList = new List<testObject>()
{
new testObject {testName = "a", testNumber = 1 },
new testObject {testName = "b", testNumber = 2 },
new testObject {testName = "c", testNumber = 3 },
new testObject {testName = "d", testNumber = 4 },
new testObject {testName = "e", testNumber = 5 }
};
int uiCounter = 1;
foreach(var test in testList)
{
StackUI.Children.Add(new CustomSwitch { SwitchPropertyName = test.testName });
StackUI.Children.Add(new Label { Text = test.testName + uiCounter });
uiCounter++;
}
}
现在最好的方法是什么,同时仍然能够精确地访问切换状态并使用它呢?
答案 0 :(得分:0)
我认为使用switch.Toggled事件可以实现这一目标。
private void switch_Toggled(object sender, ToggledEventArgs e)
{
var switch = (sender as CustomSwitch )?.SwitchPropertyName ;
}
然后您可以知道哪个开关已更改。
答案 1 :(得分:0)
我知道这有点麻烦,但是您可以使用属性StyleId
或StyleClass
(据我所知,几乎可以在每个UI元素上设置该属性),然后循环遍历您的布局或将开关添加到列表,然后遍历该列表并搜索StyleId
。
很简单,您可以使用Linq查找正确的Switch元素。