我有一个有2个构造函数的类:
public class Lens
{
public Lens(string parameter1)
{
//blabla
}
public Lens(string parameter1, string parameter2)
{
// want to call constructor with 1 param here..
}
}
Run Code Online (Sandbox Code Playgroud)
我想从第二个调用第一个构造函数.这可能在C#中吗?
我想捕获鼠标点击TextBox:
<Window x:Class="WpfApplication2.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Grid>
<TextBox x:Name="t" MouseDown="TextBox_MouseDown"
MouseLeftButtonDown="TextBox_MouseLeftButtonDown"
MouseLeftButtonUp="TextBox_MouseLeftButtonUp"
Height="50" />
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)
现在我只在用户第一次进入时收到鼠标点击事件TextBox.在此TextBox键盘焦点之后,我不再接收鼠标点击事件.知道如何让这个工作吗?
我有一个Path(一个明星人物):
<Path x:Name="NiceStar" StrokeThickness="10" Stroke="#ff000000" StrokeMiterLimit="1" Data="F1 M 126.578613,11.297852 L 162.373535,83.825684 L 242.412598,95.456055 L 184.495605,151.911133 L 198.167480,231.626953 L 126.578613,193.990234 L 54.988770,231.626953 L 68.661621,151.911133 L 10.744629,95.456055 L 90.783691,83.825684 L 126.578613,11.297852 Z">
<Path.Fill>
<RadialGradientBrush MappingMode="Absolute" GradientOrigin="390.395508,448.130371" Center="390.395508,448.130371" RadiusX="113.034821" RadiusY="113.034821">
<RadialGradientBrush.Transform>
<MatrixTransform Matrix="1,0,-0,-1,-263.816895,569.592773" />
</RadialGradientBrush.Transform>
<GradientStop Offset="0" Color="#ff00ff00"/>
<GradientStop Offset="1" Color="#ff006736"/>
</RadialGradientBrush>
</Path.Fill>
</Path>
Run Code Online (Sandbox Code Playgroud)
现在我想多次复制这个Path(只是引用"NiceStar").我可以在纯XAML中执行此操作吗?
通过这样做,我可以使用它一次:
<Decorator Child="{StaticResource star}" />
Run Code Online (Sandbox Code Playgroud)
但是,我不能复制这一行.我的编译器说:
指定的元素已经是另一个元素的逻辑子元素.首先断开它.
我有一个包含CheckBoxes的ListBox(WPF).我正在使用配置屏幕.示意图如下:

现在我要添加一个"Test 5"CheckBox.我的垂直空间有限,所以我想让它出现在水平方向,如下图所示:

可以修改ListBox布局,以便CheckBoxes将像这样排列吗?
double? test = true ? null : 1.0;
Run Code Online (Sandbox Code Playgroud)
在我的书中,这是一样的
if (true) {
test = null;
} else {
test = 1.0;
}
Run Code Online (Sandbox Code Playgroud)
但是第一行给出了这个编译错误:
无法确定条件表达式的类型,因为'
<null>'和'double' 之间没有隐式转换.
我创建了一个WPF转换器类:
public class DoubleConverter : IValueConverter
{
public object Convert(object value, Type TargetType, object parameter, CultureInfo culture)
{
//blah blah
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道谁设置了传递的culture参数.我希望它与当前的Windows设置相同,但它似乎有所不同.
任何人?
把一个当我的鼠标滚轮不起作用ListBox的ScrollViewer.
ListBox这种事件会以某种方式"窃取"吗?
<ScrollViewer VerticalScrollBarVisibility="Auto" Style="{StaticResource myStyle}">
<ListBox>
<ListBoxItem>Test 1</ListBoxItem>
<ListBoxItem>Test 2</ListBoxItem>
<ListBoxItem>Test 3</ListBoxItem>
<ListBoxItem>Test 4</ListBoxItem>
<ListBoxItem>Test 5</ListBoxItem>
<ListBoxItem>Test 6</ListBoxItem>
<ListBoxItem>Test 7</ListBoxItem>
</ListBox>
</ScrollViewer>
Run Code Online (Sandbox Code Playgroud)
编辑:按照Joel的要求,添加了我之所以这样做的原因..我这样做是因为我不喜欢ListBox内部ScrollViewer对我的布局做了什么.我有一个背景图片,除此之外,ListBox如下图所示:
替代文字http://robbertdam.nl/share/1.png
现在,当滚动条出现时,会发生以下情况:
替代文字http://robbertdam.nl/share/2.png
我创建了一个样式ScrollViewer,显示滚动条顶部的的ListBox项目内容.在ListBox项目的datatemplate中,我为滚动条保留了一些空间.
谢谢,Robbert Dam
如果我呈现以下内容:
<Grid>
<Canvas SnapsToDevicePixels="True">
<Path Fill="#FF000000" SnapsToDevicePixels="True" Data="M 0.00,0.00 L 2.50,0.00 0.00,10.00 " />
<Path Fill="#FF260014" SnapsToDevicePixels="True" Data="M 2.50,0.00 L 7.50,0.00 2.50,10.00 0.00,10.00 " />
<Canvas.RenderTransform>
<ScaleTransform ScaleX="{Binding ElementName=slider,Path=Value}" ScaleY="{Binding ElementName=slider,Path=Value}" />
</Canvas.RenderTransform>
</Canvas>
<Slider x:Name="slider" Minimum="0" Maximum="50" Value="30"/>
</Grid>
Run Code Online (Sandbox Code Playgroud)
我得到这个结果(Kaxaml):
注意两个形状之间的细白线.我四处搜索,发现这与像素对齐有关.我希望设置SnapsToDevicePixels="True"足以摆脱线路,但这不起作用!
任何想法如何摆脱白线?
在我的应用程序中,我有一个对话框,用户可以在其中选择数据库备份位置.
我想警告用户他/她选择的位置是"可能不安全".
我想考虑下列安全地点:
I:\Backup)或UNC表示法(\\server2\backup))如何获得有关所选文件夹的此类信息?
我知道这个DriveInfo类,但它只处理驱动器号,而不是UNC路径.
我有一个画有2个"点"的画布.看到这个(简化)代码:
<Canvas>
<Ellipse />
<Ellipse />
<Canvas.RenderTransform>
<RotateTransform x:Name="rotateEllipse" />
</Canvas.RenderTransform>
</Canvas>
Run Code Online (Sandbox Code Playgroud)
如您所见,我想使用给定的RotateTransform旋转画布.
接下来,我想在每个Ellipse(标签)附近放置一个TextBlock.但是,我不想将此TextBlock包含在Canvas中,因为它也会旋转.我希望文本保持水平.
知道如何以优雅的方式解决这个问题吗?
c# ×10
wpf ×7
xaml ×6
.net ×5
constructor ×1
converter ×1
drawing ×1
listbox ×1
mouseevent ×1
nullable ×1
path ×1
scrollviewer ×1
textbox ×1
vb.net ×1