我想找到WPF控件中的所有控件.我已经看了很多样本,看起来它们都需要将Name作为参数传递或者根本不起作用.
我有现有代码,但它无法正常工作:
public static IEnumerable<T> FindVisualChildren<T>(DependencyObject depObj) where T : DependencyObject
{
if (depObj != null)
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++)
{
DependencyObject child = VisualTreeHelper.GetChild(depObj, i);
if (child != null && child is T)
{
yield return (T)child;
}
foreach (T childOfChild in FindVisualChildren<T>(child))
{
yield return childOfChild;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
例如,它不会得到DataGrid一个TabItem.
有什么建议?
我最近升级到VS 2012,因为我需要开始使用.net 4.5,但这不仅仅是重点.我的问题如下:
我ResourceDictionary在我的主要项目中有一个叫做AppStyles.xaml,并且App.Xaml我有以下内容:
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="AppStyles.xaml"/>
<ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
Run Code Online (Sandbox Code Playgroud)
在我ResourceDictionary有一个样式,然后我可以通过设置将此样式应用于我的任何项目中的任何按钮Style={StaticResource MyButton}.
升级到VS 2012之后,我注意到我在标题中出现了很多错误,有时它会阻止我进行调试,有时却没有!
有没有不同的方式我应该这样做或VS 2012中有问题?
这是场景:
我一直在使用 VS 2010 使用 MEF 编写相当大的 WPF 项目。这个解决方案中有多个项目,我有一个ResourceDictionary适合我的所有风格。
在AppStyles.xaml ResourceDictionary位于我的启动项目,它包含了所有的我的风格的项目。在我的内部,我App.xaml有以下内容:
<Application x:Class="Dionysus.Shell.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
DispatcherUnhandledException="UnhandledException" ShutdownMode="OnMainWindowClose">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="AppStyles.xaml"/>
</ResourceDictionary>
</Application.Resources>
Run Code Online (Sandbox Code Playgroud)
现在,这一切都在 VS 2010 的设计模式下完美运行,当我调试时,正确的样式将应用于我的所有控件。但是最近换了VS 2012,设计器已经不工作了!当我调试它时,它可以完美运行,但是每当我使用我的一种样式时,如下所示:
<Button Name="btnForward" Height="23" Margin="10,0" Style="{StaticResource DionysusButton}" Grid.Row="2" Grid.Column="0"/>
Run Code Online (Sandbox Code Playgroud)
我在 VS 2012 设计器中收到以下错误:
The resource "DionysusButton" could not be resolved.
Run Code Online (Sandbox Code Playgroud)
我不知道为什么会发生这种情况,我已经重命名了我的Style,甚至ResourceDictionary都无济于事。
我应该在 VS 2012 中以不同的方式执行此操作,还是 VS 2012 存在问题?
我发现很多帖子都说将x:Namemy的属性更改AppStyles.xaml ResourceDictionary为x:Key将解决此问题,但我不能这样做,因为它不是ResourceDictionary.
提前谢谢
- 更新
我正在使用 …
我正在使用 SteamVR 并想根据控制器升高的高度旋转相机,我编写了将控制器的高度发送到我的相机脚本上的方法的脚本。
当我执行以下操作时,轮换有效:
transform.Rotate(0, 0, 30); // 30 is just to test, we will use the controller height later
但我想慢慢地做这个轮换,这不能立即发生。
我也尝试过使用 Quaternion.Lerp,但它似乎不起作用。
Quaternion.Lerp(this.transform.rotation, new Quaternion(this.transform.rotation.eulerAngles.x, this.transform.rotation.eulerAngles.y, zPosition, 0), Time.deltaTime * 5);
有什么建议?
我在WPF应用程序中收到以下错误:
Declaration referenced in a method implementation cannot be a final method.
Run Code Online (Sandbox Code Playgroud)
我发现的唯一一件事就是问题是非虚拟方法被覆盖了,但是我检查过并且在我的对象中找不到任何东西.
编译时不会抛出错误,但只有在我调试时才会抛出.
有没有人有我可能会尝试的建议?
- 更新
OnStartup调用时,我在App.Xaml.cs 覆盖中出现错误:
var catalog = new AggregateCatalog();
catalog.Catalogs.Add(new DirectoryCatalog(localDir));
_container = new CompositionContainer(catalog);
Run Code Online (Sandbox Code Playgroud)
在_container上,升级到CSLA 4.5.10后,我收到15个LoaderException.