小编mor*_*anu的帖子

WPF边框厚度增加方向

嘿.另一个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宽度 - 高度之外,而是在内部,减小了尺寸.有没有办法做相反的事情?

wpf border thickness

10
推荐指数
1
解决办法
8986
查看次数

WPF自定义DependencyProperty通知更改

我有一个名为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将被调用.

wpf dependency-properties notify dependencyobject

9
推荐指数
1
解决办法
8892
查看次数

HTML Agility Pack - 在特定节点之后选择节点

在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元素之后.

有没有办法做到这一点?

谢谢.

html c# asp.net html-agility-pack

8
推荐指数
1
解决办法
6683
查看次数

WPF分隔符位置

我正在使用分隔符在边框内绘制一条垂直线.起初这是好的,因为线需要居中,但现在我需要将它放在左边框的自定义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)

wpf position separator

6
推荐指数
1
解决办法
8049
查看次数

Raphael.js中的自定义动画

Hyphotesis

我在路径上有一些圆圈(参见图中的起始形状),他们需要动画到另一条路径(图中的最终形状).

动画必须执行以下操作:
- 将整个形状移动到新位置
- 更改路径
- 减小所有圆弧半径

图:
开始和结束位置

问题

Raphael.js知道如何设置从原始坐标到最终坐标的圆形动画,同时改变半径.因为动画不像原始动画和最终动画那样在类似路径上运行,所以动画看起来不太好.圆圈以直线从x1,y1到x2,y2.

我尝试了什么

  1. 执行直接动画,从开始到结束移动圆圈,更改半径.就像我说的,这不行.

  2. 以间隔移动每个圆,计算每次迭代的新路径并计算圆的位置.这很慢.

  3. 使用Element.getPointAtLength()计算每次迭代的临时圆位置.这也很慢.

  4. 将一些中间路径硬编码在数组中并通过每个路径运行动画.这在速度方面更好,但看起来有点生涩

那么,有什么想法吗?

javascript animation svg raphael

5
推荐指数
1
解决办法
748
查看次数

WPF画布绑定

我对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)

c# wpf xaml binding canvas

3
推荐指数
1
解决办法
4520
查看次数

WPF BitmapImage内存问题

我在一个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()之前获得宽度?

memory wpf bitmapimage

3
推荐指数
1
解决办法
2671
查看次数

Linq orderby使用自定义比较器进行两列排序

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进行排序.

linq sql-order-by

3
推荐指数
2
解决办法
4444
查看次数

WPF RibbonTextBox宽度问题

在我看来,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行为?

wpf textbox ribbon width

1
推荐指数
1
解决办法
3120
查看次数