gpt4 book ai didi

c# - WPF,兄弟选择像 jQuery?

转载 作者:行者123 更新时间:2023-11-30 14:40:06 25 4
gpt4 key购买 nike

我的 WPF 应用程序中有以下 XAML 代码作为示例

<StackPanel Height="23" Name="MSpanel" Orientation="Horizontal" Width="138" Margin="37,13,0,0" VerticalAlignment="Top" HorizontalAlignment="Left" >
<TextBox Height="23" Name="MTBox" Width="120" Text="0" />
<ScrollBar Height="23" Name="MSBar" Width="18" TouchUp="SBar_TouchUp" />
</StackPanel>
<StackPanel Height="23" Name="CSPanel" Orientation="Horizontal" Width="138" Margin="37,41,0,0" VerticalAlignment="Top" HorizontalAlignment="Left">
<TextBox Height="23" Name="CTBox" Width="120" Text="0" />
<ScrollBar Height="23" Name="CSBar" Width="18" TouchUp="SBar_TouchUp" />
</StackPanel>

我有这个功能:

private void SBar_TouchUp(object sender, TouchEventArgs e)
{
//what goes here?
//siblings.getFirst('textbox').text += 1;
}

我希望做的是拥有 1 个函数来控制 WPF 中的这些“Psudo”数字上下。如果有某种方法可以有一个统一的功能,可以引用兄弟文本框,那么我只需要写一次。那将是理想的。

我非常熟悉 jQuery,XAML 看起来像一个 HTML DOM,...有没有办法浏览树?

我知道现有的 Numeric Up Downs 可供下载。我相信这个想法对于 future 在其他方面的努力也是有好处的。谢谢。


有效的解决方案!

private void SBar_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
if (e.NewValue == 0) return; //abort here, no change

ScrollBar sb = (ScrollBar)sender;
StackPanel sp = (StackPanel)sb.Parent;
TextBox tb = (TextBox)sp.Children[0];

int change = e.NewValue < 0 ? 1 : -1;
sb.Value = 0; //this will invoke this function again
tb.Text = (Convert.ToInt32(tb.Text) + change).ToString();
}

最佳答案

可视化树中的每个元素都有一个 ParentVisualParent属性 - 因为所有元素都基于 UIElement - 要么应该给你父对象。

在这种情况下,ScrollBar 的父级是 StackPanel。然后您可以使用 Children StackPanel 的属性来获取子对象的集合。您知道哪个是 ScrollBar(它是 sender),所以另一个必须是 TextBox

关于c# - WPF,兄弟选择像 jQuery?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5772164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com