这可能是我错过的简单事情.
让我说我做(在loveley VB中):
Dim t1 As New Task(Sub() Debug.WriteLine("t1"))
Dim t2 As Task = t1.ContinueWith(Sub() Debug.WriteLine("t2"))
Dim t3 As Task = t1.ContinueWith(Sub() Debug.WriteLine("t3"))
t1.Start()
Run Code Online (Sandbox Code Playgroud)
注意t1.ContinueWith使用两次.这些任务的首选执行顺序是什么?对我来说,无论是随机还是错误.
我想这样做的原因......
TaskScheduler.FromCurrentSynchronizationContext()UI线程上""分类"UI由于步骤4是可选的,因此这变得更加复杂.
在所有这些中,我的任务向后弯曲以设置成员属性,因此UI和任务可以很好地发挥作用.也许我应该完全放弃任务结果,只是坚持Synclocking我的成员变量.它们都只是一次性分配.
谢谢,汤姆
这是非常模糊的,我可能只是遗漏了一些非常简单的东西.
场景1
让我说我创建一个渐变画笔,在我的<Window.Resources>部分中这样:
<LinearGradientBrush x:Key="GridRowSelectedBackBrushGradient" StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="#404040" Offset="0.0" />
<GradientStop Color="#404040" Offset="0.5" />
<GradientStop Color="#000000" Offset="0.6" />
<GradientStop Color="#000000" Offset="1.0" />
</LinearGradientBrush>
Run Code Online (Sandbox Code Playgroud)
然后很久以后,我想覆盖HighlightBrushKey一个DataGrid.我基本上这样做了(太可怕了);
<LinearGradientBrush x:Key="{x:Static SystemColors.HighlightBrushKey}"
GradientStops="{Binding Source={StaticResource GridRowSelectedBackBrushGradient}, Path=GradientStops}"
StartPoint="{Binding Source={StaticResource GridRowSelectedBackBrushGradient}, Path=StartPoint}"
EndPoint="{Binding Source={StaticResource GridRowSelectedBackBrushGradient}, Path=EndPoint}" />
Run Code Online (Sandbox Code Playgroud)
这显然不是引用资源最灵活的方式.我也提出了以下问题,几乎完全相同.
情景2
假设我在我的<Window.Resources>标记中创建了两种颜色,如下所示:
<SolidColorBrush x:Key="DataGridRowBackgroundBrush" Color="#EAF2FB" />
<SolidColorBrush x:Key="DataGridRowBackgroundAltBrush" Color="#FFFFFF" />
Run Code Online (Sandbox Code Playgroud)
然后,我想在一个Array中提供它们,它在Binding上提供ConverterParameter,这样我就可以为我的静态资源实例提供自定义Converter:
<Setter Property="Background">
<Setter.Value>
<Binding RelativeSource="{RelativeSource Mode=Self}"
Converter="{StaticResource BackgroundBrushConverter}">
<Binding.ConverterParameter>
<x:Array Type="{x:Type Brush}">
<SolidColorBrush Color="{Binding Source={StaticResource DataGridRowBackgroundBrush}, Path=Color}" />
<SolidColorBrush Color="{Binding Source={StaticResource …Run Code Online (Sandbox Code Playgroud) 你知道,就像太空堡垒纸!我已经给出了一些建议,但现在我很困惑。我还没有走几何路线,所以我将尽我所能解释。
我希望边框要大一些,但要像CornerRadius一样包含固定大小的角。除了圆角,我希望它们是锥形的,例如:
/---------\
| |
| |
\_________/
Run Code Online (Sandbox Code Playgroud)
我已经做了两次尝试:
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
<Grid.Resources>
<Style x:Key="MyPoly" TargetType="Polygon">
<Setter Property="Points">
<Setter.Value>
<PointCollection>
<Point X="0.10" Y="0.01"/>
<Point X="0.50" Y="0.01"/>
<Point X="0.60" Y="0.10"/>
<Point X="0.60" Y="0.50"/>
<Point X="0.50" Y="0.60"/>
<Point X="0.10" Y="0.60"/>
<Point X="0.01" Y="0.50"/>
<Point X="0.01" Y="0.10"/>
</PointCollection>
</Setter.Value>
</Setter>
</Style>
</Grid.Resources>
<Border
Width="100"
Height="100"
BorderBrush="Black"
BorderThickness="3"
CornerRadius="5"/>
<Grid Width="400"
Height="300">
<Polygon
Stroke="Purple"
StrokeThickness="2"
Style="{StaticResource MyPoly}" Stretch="Fill">
<Polygon.Fill>
<SolidColorBrush Color="Blue" Opacity="0.4"/>
</Polygon.Fill>
<Polygon.LayoutTransform>
<ScaleTransform ScaleX="1" ScaleY="1"/>
</Polygon.LayoutTransform>
</Polygon>
</Grid> …Run Code Online (Sandbox Code Playgroud)