嘿.另一个WPF问题.在我的XAML代码中,我有一个边框:
<Border x:Name="myBorder" Background="AliceBlue"
Width="200" Height="200"
BorderThickness="10" BorderBrush="Black">
</Border>
Run Code Online (Sandbox Code Playgroud)
在代码中的某处我增加了BorderThickness
double thickness = myBorder.BorderThickness.Bottom + 2;
myBorder.BorderThickness = new Thickness(thickness);
Run Code Online (Sandbox Code Playgroud)
结果是边框的重量增加但不在200x200宽度 - 高度之外,而是在内部,减小了尺寸.有没有办法做相反的事情?
我有一个名为MyComponent的类,它有一个DependencyProperty caled BackgroundProperty.
public class MyComponent
{
public MyBackground Background
{
get { return (MyBackground)GetValue(BackgroundProperty); }
set { SetValue(BackgroundProperty, value); }
}
public static readonly DependencyProperty BackgroundProperty =
DependencyProperty.Register("Background", typeof(MyBackground),
typeof(MyComponent), new FrameworkPropertyMetadata(default(MyBackground), new PropertyChangedCallback(OnPropertyChanged)));
}
Run Code Online (Sandbox Code Playgroud)
MyBackground是一个派生自DependencyObject的类,它有一些DependencyProperties.
public class MyBackground : DependencyObject
{
public Color BaseColor
{
set { SetValue(BaseColorProperty, value); }
get { return (Color)GetValue(BaseColorProperty); }
}
public static readonly DependencyProperty BaseColorProperty =
DependencyProperty.Register("BaseColor", typeof(Color),
typeof(MyBackground ), new UIPropertyMetadata(Colors.White));
[...]
}
Run Code Online (Sandbox Code Playgroud)
现在,我想要的是当MyBackground中的属性发生更改时,MyComponent将被通知MyBackground已更改,并且名为OnPropertyChanged的PropertyChangedCallback将被调用.
我在codeplex讨论中提出了这个问题,但我希望能在stackoverflow上得到更快的答案.
因此,我使用HTML Agility Pack在C#中进行HTML解析.我有以下html结构:
<body>
<p class="paragraph">text</p>
<p class="paragraph">text</p>
<p class="specific">text</p>
<p class="paragraph">text</p>
<p class="paragraph">text</p>
</body>
Run Code Online (Sandbox Code Playgroud)
而且我需要获得所有带有"段落"的p元素,这些元素存在于带有"特定"类的p元素之后.
有没有办法做到这一点?
谢谢.
我正在使用分隔符在边框内绘制一条垂直线.起初这是好的,因为线需要居中,但现在我需要将它放在左边框的自定义x位置.有没有办法做到这一点?
<Border x:Name="border" ClipToBounds="True" Background="White" BorderBrush="Black" BorderThickness="2">
<Separator BorderBrush="Black" BorderThickness="2">
<Separator.LayoutTransform>
<RotateTransform Angle="90" />
</Separator.LayoutTransform>
</Separator>
</Border>
Run Code Online (Sandbox Code Playgroud) Hyphotesis
我在路径上有一些圆圈(参见图中的起始形状),他们需要动画到另一条路径(图中的最终形状).
动画必须执行以下操作:
- 将整个形状移动到新位置
- 更改路径
- 减小所有圆弧半径
图:

问题
Raphael.js知道如何设置从原始坐标到最终坐标的圆形动画,同时改变半径.因为动画不像原始动画和最终动画那样在类似路径上运行,所以动画看起来不太好.圆圈以直线从x1,y1到x2,y2.
我尝试了什么
执行直接动画,从开始到结束移动圆圈,更改半径.就像我说的,这不行.
以间隔移动每个圆,计算每次迭代的新路径并计算圆的位置.这很慢.
使用Element.getPointAtLength()计算每次迭代的临时圆位置.这也很慢.
将一些中间路径硬编码在数组中并通过每个路径运行动画.这在速度方面更好,但看起来有点生涩
那么,有什么想法吗?
我对WPF很新,所以这可能是一个简单的问题.我有一个派生自Canvas的类,我们称之为MyCanvas.我有一个类MyClass,它具有MyCanvas类型的属性.在XAML中,我构建了一个TabControl,因此每个TabItem都绑定到一个MyClass对象.现在,在每个选项卡的内容中,我想显示MyObject.MyCanvas.
我该怎么办?
<TabControl.ContentTemplate>
<DataTemplate>
<Grid>
<myCanvas:MyCanvas Focusable="true" Margin="10" >
<Binding Path="Canvas"></Binding>
</myCanvas:MyCanvas>
</Grid>
</DataTemplate>
</TabControl.ContentTemplate>
Run Code Online (Sandbox Code Playgroud) 我在一个WPF应用程序上工作,该应用程序有多个画布和许多按钮.用户可以加载图像以更改按钮背景.
这是我在BitmapImage对象中加载图像的代码
bmp = new BitmapImage();
bmp.BeginInit();
bmp.CreateOptions = BitmapCreateOptions.IgnoreImageCache;
bmp.CacheOption = BitmapCacheOption.OnLoad;
bmp.UriSource = new Uri(relativeUri, UriKind.Relative);
bmp.EndInit();
Run Code Online (Sandbox Code Playgroud)
并且在EndInit()应用程序的内存增长非常多.
让思考更好(但并没有真正解决问题)的一件事就是增加
bmp.DecodePixelWidth = 1024;
Run Code Online (Sandbox Code Playgroud)
1024 - 我的最大画布大小.但我应该只对宽度大于1024的图像执行此操作 - 那么如何在EndInit()之前获得宽度?
List<MyObject> objects = (from a in alist
join b in blist on a.ID equals b.ID
where a.Number != 4
orderby b.Rank, a.CustomField
select a).ToList();
Run Code Online (Sandbox Code Playgroud)
这是我的查询,我想为CustomField属性使用自定义Comparer.有没有办法在双场顺序中做到这一点?
我能够做到这一点:
List<MyObject> objects = objects.OrderBy(a => a.CustomField, new MyComparer<object>())
Run Code Online (Sandbox Code Playgroud)
但我需要它按s.Rank和a.CustomField进行排序.
在我看来,Ribbon控件有文本框的问题.我期待一个常见的TextBox控件行为:当文本超出宽度时,固定宽度和可见插入符号.但RibbonTextBox控件更改其宽度,当文本超出右限制时,溢出不可见.
我在博客上发现了一个像这样的东西:
var img = SearchButton.Template.FindName("image", SearchButton);
if (img != null && img is Image)
(img as Image).Visibility = Visibility.Collapsed;
var lbl = FindTemplateControl<Label>(SearchText);
var border = SearchText.Template.FindName("Bd", SearchText);
if (border != null && border is Border && img != null && lbl != null)
{
(border as Border).Width = SearchText.ActualWidth - (((Image)img).ActualWidth + lbl.ActualWidth);
}
Run Code Online (Sandbox Code Playgroud)
但我真的不想做这样的解决方法.有没有其他更简单的方法来实现简单的TextBox行为?