在此示例代码中,我试图抵消Grid的Canvas通过其行的高度位置.有谁看到我可能做错了什么?正如您所看到的,我尝试在xaml文件中移动绑定较低的位置,以防RowDefinitions首先需要定义.无论哪种方式,它似乎并不重要因为Canvas.Top总是0.
<Canvas>
<Grid Canvas.Top="{Binding ElementName=DetailsRow, Path=ActualHeight}">
<Grid.RowDefinitions>
<RowDefinition x:Name="NameRow" />
<RowDefinition x:Name="DetailsRow" />
</Grid.RowDefinitions>
<Button Grid.Row="0">Button</Button>
<Button Grid.Row="1">Button</Button>
<!-- I expected this to maybe work, but no dice
<Canvas.Top>
<Binding ElementName="DetailsRow" Path="ActualHeight" />
</Canvas.Top>
-->
</Grid>
</Canvas>
Run Code Online (Sandbox Code Playgroud) 我仍然没有得到它.你能否告诉我如何覆盖ListBox的默认行为.每次选择ListBoxItem时,都应更改Border的背景.不是整行的背景,而是仅指定边框的背景.
<ListBox ItemsSource="{Binding Source={StaticResource AssetsViewSource}}">
<ListBox.ItemTemplate>
<DataTemplate>
<Border BorderThickness="2" BorderBrush="Black">
<StackPanel>
<TextBlock Text="Name: " />
<TextBlock Text="{Binding Name}" />
</StackPanel>
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Run Code Online (Sandbox Code Playgroud) 我想知道如何将自定义数据类型绑定到TreeView.
数据类型基本上是包含其他arraylists的对象的arraylist.访问将看起来像这样:
foreach (DeviceGroup dg in system.deviceGroups)
{
foreach (DeviceType dt in dg.deviceTypes)
{
foreach (DeviceInstance di in dt.deviceInstances)
{
}
}
}
Run Code Online (Sandbox Code Playgroud)
我希望TreeView看起来像这样:
DeviceGroup1
--> DeviceType1
--DeviceInstance1
--DeviceInstance2
--> DeviceType2
--DeviceInstance1
Run Code Online (Sandbox Code Playgroud)
DeviceGroup2
--> DeviceType1
--DeviceInstance1
--> DeviceType2
Run Code Online (Sandbox Code Playgroud) 我在屏幕上有几个UI元素(以编程方式),并且需要一种有效的方式为每个子视图提供z-index设置,因此我可以将某些元素叠加到其他元素上.
有人有解决方案吗?
我有一个应用程序在数组数组上进行大量的数字运算.我将其设置为每100,000次操作以显示这些数字的状态.这只是应用程序仍处理的操作员的可视指示,以及完成的距离.
运行应用程序几个小时后,它会崩溃并出现OutOfMemoryExeption.我在上面运行了CLRProfiler,发现在TextBox中发生泄漏,显示了数组的当前状态......每次接口更新时,应用程序在Char []中构建~4K,每个位的堆栈跟踪挂起记忆是一样的.
这是WPF中的一个错误,还是我不知道应该做些什么来防止这种情况发生?我没有看到任何其他参考.因为无论如何这是一个非常耗费处理器的操作,如果我不必只显示数组的当前状态,我宁愿不必销毁和重建TextBox.
这是我能找到的唯一内存泄漏,但是由于所需的操作数量庞大,这对应用程序来说实际上是一个大问题,即使我只是降低了接口更新的频率.如果您需要更多信息,我会尽可能提供帮助,但请理解由于此应用程序的作用,我几乎不能发布任何源代码,我将不得不匿名化任何内容(删除任何指示应用程序的目的)我可以发布.
当通过CLR Profiler(DRASTICALLY降低性能)运行时,每2秒发生以下相同的跟踪(记住:100,000次操作)并且永远不会释放内存.当它在没有附加分析器的情况下运行时,更新之间的时间<1秒.
一次更新("Who Allocated")的跟踪是:
<root> : 3.7 kB (100.00%)
WpfApplication0.App::Main static void (): 3.7 kB (100.00%)
System.Windows.Application::Run int32 (): 3.7 kB (100.00%)
System.Windows.Application::Run int32 (System.Windows.Window): 3.7 kB (100.00%)
System.Windows.Application::RunInternal int32 (System.Windows.Window): 3.7 kB (100.00%)
System.Windows.Application::RunDispatcher Object (Object): 3.7 kB (100.00%)
System.Windows.Threading.Dispatcher::Run static void (): 3.7 kB (100.00%)
System.Windows.Threading.Dispatcher::PushFrame static void (System.Windows.Threading.DispatcherFrame): 3.7 kB (100.00%)
System.Windows.Threading.Dispatcher::PushFrameImpl void (System.Windows.Threading.DispatcherFrame): 3.7 kB (100.00%)
NATIVE FUNCTION ( UNKNOWN ARGUMENTS ): 3.7 kB (100.00%)
MS.Win32.HwndSubclass::SubclassWndProc int_ptr (int_ptr int32 int_ptr int_ptr): …Run Code Online (Sandbox Code Playgroud) 出什么问题了:
let (x:UIElement) = upcast new TextBlock()
Run Code Online (Sandbox Code Playgroud)
错误是:此处需要类型为"System.ComponentModel.ISupportInitialize"且不可用.您必须添加对程序集'System,Version = 4.0.0 ....'的引用.
TextBlock 是UIElement ... 的子类型
请注意,执行错误消息所说明的内容确实可以解决问题,但为什么有必要做一些基本的转发?
问题?
<UI:PanelBrowser Margin="12,27,12,32"></UI:PanelBrowser>
Run Code Online (Sandbox Code Playgroud)
WPF是荒谬的,因为在这种情况下不手动指定属性(例如宽度和高度)会导致它们具有值Doulbe.NaN.问题是我需要知道这个数字.我不打算在XAML中手动设置宽度和高度,因为这会阻止它调整大小.
给定上面的XAML(此对象是Border控件的简单子类),如何在运行时获取Width和Height属性的值?
编辑:
哇,我觉得很荒谬.我读到ActualWidth和ActualHeight,但他们一直为我返回0和0.原因是我在实际初始化之前在Framework Element的构造函数中测试了这些属性.希望这有助于遇到同样问题和测试谬误的人.:)
什么样的控件可以水平布局子项目,还可以统一调整项目大小以适应可用的水平空间?我正在替换树视图模板中的"ItemsPanelTemplate",并且stackpanel将以正确的方向放置项目,但不会调整它们的大小.网格将仅显示树视图中的第一个子项,并且缺少水平重定向的支持.
如何将画布“停靠”在其父级中?
我有一个UserControl,其中包含一个画布。
<UserControl x:Class="MyUC"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<MyCanvas x:Name="myCanvas"
Height="???"
Width="???{Binding RelativeSource={RelativeSource TemplatedParent}}" >
</MyCanvas>
</UserControl>
Run Code Online (Sandbox Code Playgroud)
我在其中使用此自定义画布的Width和Height属性。并且需要始终将这些属性“绑定”到父容器。
wpf ×7
c# ×3
uielement ×2
.net ×1
binding ×1
canvas ×1
data-binding ×1
dock ×1
f# ×1
grid ×1
height ×1
iphone ×1
layout ×1
listbox ×1
listboxitem ×1
memory-leaks ×1
msbuild ×1
objective-c ×1
size ×1
styles ×1
textbox ×1
treeview ×1
uiimageview ×1
uilabel ×1
xaml ×1