- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有数据库填充我的列表框,在下一步之前,我希望有机会使用 tooglebuttons 自定义用户选择。
所以我想在代码隐藏中获取有关他的选择的信息。我在这个 answer 中找到使用 VisualTreeHelper 的代码。
这是我的xaml代码
<!--ContentPanel - place additional content here-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<controls:Pivot>
<controls:PivotItem>
<ListBox x:Name="PizzaList" SelectionChanged="PizzaList_SelectionChanged" IsSynchronizedWithCurrentItem="false" >
<ListBox.ItemTemplate>
<DataTemplate x:Name="template">
<toolkit:ExpanderView Header="{Binding Nazwa}" x:Name="expander" Style="{StaticResource ExpanderViewStyle}">
<toolkit:ExpanderView.Items>
<!--first stack panel would contain all elements which would be showed
after clicking on listbox item-->
<StackPanel Margin="20,0,0,0" Orientation="Vertical">
<TextBlock HorizontalAlignment="Left" Text="Rozmiar"></TextBlock>
<!-- this stack panel contains 2 buttons which are
connected to sizes of pizza -->
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
<ToggleButton Width="200">
<!--this how would look the button's content-->
<StackPanel HorizontalAlignment="Center" Orientation="Vertical">
<TextBlock>⌀28cm</TextBlock>
<TextBlock Text="{Binding Cenaa}"></TextBlock>
</StackPanel>
</ToggleButton>
<ToggleButton Width="200">
<StackPanel HorizontalAlignment="Center" Orientation="Vertical">
<TextBlock>⌀50cm</TextBlock>
<TextBlock Text="{Binding Cenab}"></TextBlock>
</StackPanel>
</ToggleButton>
</StackPanel>
<!-- here part of code which would show type of cake option-->
<TextBlock Margin="0,12,0,0">Grubość ciasta:</TextBlock>
<StackPanel Orientation="Horizontal">
<ToggleButton x:Name="small" IsChecked="true">
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center">small</TextBlock>
</ToggleButton>
<ToggleButton x:Name="middle" Checked="Grubosc_Checked">
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center">middle</TextBlock>
</ToggleButton>
<ToggleButton x:Name="fat" Checked="Grubosc_Checked">
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center">fat</TextBlock>
</ToggleButton>
</StackPanel>
<Button>edit</Button>
<Button>basket</Button>
</StackPanel>
</toolkit:ExpanderView.Items>
<toolkit:ExpanderView.Expander>
<TextBlock Text="{Binding Skladniki}" Width="500"></TextBlock>
</toolkit:ExpanderView.Expander>
</toolkit:ExpanderView>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</controls:PivotItem>
</controls:Pivot>
</Grid>
这是从答案中获取的方法:
public static T FindChild<T>(DependencyObject parent, string childName)
where T : DependencyObject
{
// Confirm parent and childName are valid.
if (parent == null) return null;
T foundChild = null;
int childrenCount = VisualTreeHelper.GetChildrenCount(parent);
for (int i = 0; i < childrenCount; i++)
{
var child = VisualTreeHelper.GetChild(parent, i);
// If the child is not of the request child type child
T childType = child as T;
if (childType == null)
{
// recursively drill down the tree
foundChild = FindChild<T>(child, childName);
// If the child is found, break so we do not overwrite the found child.
if (foundChild != null) break;
}
else if (!string.IsNullOrEmpty(childName))
{
var frameworkElement = child as FrameworkElement;
// If the child's name is set for search
if (frameworkElement != null && frameworkElement.Name == childName)
{
// if the child's name is of the request name
foundChild = (T)child;
break;
}
}
else
{
// child element found.
foundChild = (T)child;
break;
}
}
return foundChild;
}
我试着通过这条线找到我的 child
var found = FindChild<ToggleButton>(template, "small");
然后我在这一行中得到了错误:
int childrenCount = VisualTreeHelper.GetChildrenCount(parent);
An exception of type 'System.InvalidOperationException' occurred in System.Windows.ni.dll but was not handled in user code"
我的错误是什么?我应该如何访问此按钮?
最佳答案
好吧,在您的 FindChild
方法中的某处有一个错误,如果不调试就很难判断。试试这个方法(我 3 多年前写的,没有任何问题):
public static T FindVisualChildByName<T> (this FrameworkElement elem, string name) where T : DependencyObject
{
for (var i = 0; i < VisualTreeHelper.GetChildrenCount (elem); i++)
{
var child = VisualTreeHelper.GetChild (elem, i) as FrameworkElement;
if (child == null)
continue;
var controlName = child.GetValue (Control.NameProperty) as string;
if (controlName == name)
return child as T;
var result = FindVisualChildByName<T> (child, name);
if (result != null)
return result;
}
return null;
}
关于c# - 尝试获取嵌套在数据模板中的按钮后面的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21143276/
我需要您在以下方面提供帮助。近一个月来,我一直在阅读有关任务和异步的内容。 我想尝试在一个简单的 wep api 项目中实现我新获得的知识。我有以下方法,并且它们都按预期工作: public Htt
我的可执行 jar 中有一个模板文件 (.xls)。不需要在运行时我需要为这个文件创建 100 多个副本(稍后将唯一地附加)。用于获取 jar 文件中的资源 (template.xls)。我正在使用
我在查看网站的模型代码时对原型(prototype)有疑问。我知道这对 Javascript 中的继承很有用。 在这个例子中... define([], function () { "use
影响我性能的前三项操作是: 获取滚动条 获取偏移高度 Ext.getStyle 为了解释我的应用程序中发生了什么:我有一个网格,其中有一列在每个单元格中呈现网格。当我几乎对网格的内容做任何事情时,它运
我正在使用以下函数来获取 URL 参数。 function gup(name, url) { name = name.replace(/[\[]/, '\\\[').replace(/[\]]/,
我最近一直在使用 sysctl 来做很多事情,现在我使用 HW_MACHINE_ARCH 变量。我正在使用以下代码。请注意,当我尝试获取其他变量 HW_MACHINE 时,此代码可以完美运行。我还认为
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 关闭 9 年前。 要求提供代码的问题必须表现出对所解决问题的最低限度的理解。包括尝试过的解决方案、为什么
由于使用 main-bower-files 作为使用 Gulp 的编译任务的一部分,我无法使用 node_modules 中的 webpack 来require 模块code> dir 因为我会弄乱当
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 5 年前。 Improve this qu
我使用 Gridlayout 在一行中放置 4 个元素。首先,我有一个 JPanel,一切正常。对于行数变大并且我必须能够向下滚动的情况,我对其进行了一些更改。现在我的 JPanel 上添加了一个 J
由于以下原因,我想将 VolumeId 的值保存在变量中: #!/usr/bin/env python import boto3 import json import argparse import
我正在将 MSAL 版本 1.x 更新为 MSAL-browser 的 Angular 。所以我正在尝试从版本 1.x 迁移到 2.X.I 能够成功替换代码并且工作正常。但是我遇到了 acquireT
我知道有很多关于此的问题,例如 Getting daily averages with pandas和 How get monthly mean in pandas using groupby但我遇到
This is the query string that I am receiving in URL. Output url: /demo/analysis/test?startDate=Sat+
我正在尝试使用 javascript 中的以下代码访问 Geoserver 层 var gkvrtWmsSource =new ol.source.ImageWMS({ u
API 需要一个包含授权代码的 header 。这就是我到目前为止所拥有的: var fullUrl = 'https://api.ecobee.com/1/thermostat?json=\{"s
如何获取文件中的最后一个字符,如果是某个字符,则删除它而不将整个文件加载到内存中? 这就是我目前所拥有的。 using (var fileStream = new FileStream("file.t
我是这个社区的新手,想出了我的第一个问题。 我正在使用 JSP,我成功地创建了 JSP-Sites,它正在使用jsp:setParameter 和 jsp:getParameter 具有单个字符串。
在回答 StoreStore reordering happens when compiling C++ for x86 @Peter Cordes 写过 For Acquire/Release se
我有一个函数,我们将其命名为 X1,它返回变量 Y。该函数在操作 .on("focusout", X1) 中使用。如何获取变量Y?执行.on后X1的结果? 最佳答案 您可以更改 Y 的范围以使其位于函
我是一名优秀的程序员,十分优秀!