我一直忙于在我们的项目中重构一个文件,作为我的更改的一部分,我将函数重新排序为更合理的方式.但是,现在当我试图检查我的更改时,我得到了一个烂摊子:diff应用程序不知道这些函数只是重新排序,并将80%的文件内容标记为已更改.
我试图将"超越比较"和"WinMerge"的差异看成相同的结果.有什么设置可以帮助我吗?
标记为,我在Windows上使用C#.
请考虑以下示例:
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Top">
<Line Stroke="Red" X1="0" X2="100" Y1="50" Y2="50"/>
<Line Stroke="Red" X1="50" X2="50" Y1="0" Y2="100"/>
</Grid>
Run Code Online (Sandbox Code Playgroud)
尽管两条线都具有SolidColorBrush并且两者都具有不透明度= 1,但仍然会发生颜色混合:交叉点处的像素具有较深的红色.
为什么会发生这种情况,我该如何预防呢?
谢谢!
PS这是明确定义画笔的相同代码的另一个示例:
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Top">
<Grid.Resources>
<Style TargetType="{x:Type Line}">
<Setter Property="Stroke">
<Setter.Value>
<SolidColorBrush Color="Red" Opacity="1" />
</Setter.Value>
</Setter>
</Style>
</Grid.Resources>
<Line X1="0" X2="100" Y1="50" Y2="50" />
<Line X1="50" X2="50" Y1="0" Y2="100" />
</Grid>
Run Code Online (Sandbox Code Playgroud) 我有以下XAML:
<UserControl x:Class="WpfWindow.MyControl"
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">
<UserControl.RenderTransform>
<TranslateTransform X="{Binding ElementName=MySlider, Path=ActualWidth}" />
</UserControl.RenderTransform>
<Grid>
<Slider x:Name="MySlider" Canvas.Left="41" Canvas.Top="86" Height="23" Width="100" Minimum="0" Maximum="100"/>
</Grid>
</UserControl>
Run Code Online (Sandbox Code Playgroud)
当我尝试使用带有UserControl的窗口时,我得到:
System.Windows.Data Error: 4 : Cannot find source for binding with reference 'ElementName=MySlider'. BindingExpression:Path=ActualWidth; DataItem=null; target element is 'TranslateTransform' (HashCode=53368240); target property is 'X' (type 'Double')
Run Code Online (Sandbox Code Playgroud)
特别奇怪,因为直接在Window中使用相同的代码可以完美地工作.
现在我通过在代码中设置绑定来解决问题,但是,我不知道为什么我的版本不起作用,如果可能的话,我宁愿在XAML中拥有所有内容.
谢谢!
考虑以下ViewModel属性:
private string _slowProperty;
public string SlowProperty
{
get { return _slowProperty; }
set
{
_slowProperty = value;
RaisePropertyChanged("SlowProperty");
}
}
Run Code Online (Sandbox Code Playgroud)
哪个绑定到文本框,如下所示:
<TextBox Text="{Binding SlowProperty}" />
Run Code Online (Sandbox Code Playgroud)
现在,这里的问题是,每当SlowProperty的值发生变化,并且经常这样做时,文本框就会尝试获取其值,这很慢.我可以使用异步绑定来缓解这种情况,但这仍然会浪费CPU周期.
相反,我想拥有的是:
<TextBlock Text="{z:DelayedSourceBinding SlowProperty}" />
Run Code Online (Sandbox Code Playgroud)
哪会在一定延迟后试图获得绑定.因此,例如,如果在SlowProperty短时间内连续更改5次,则只有最后一个文本在文本框中可见.
我发现以下项目执行类似的操作,所以我的例子我可以这样使用它:
<TextBox Text="{z:DelayBinding Path=SearchText}" />
Run Code Online (Sandbox Code Playgroud)
它的问题在于它只在延迟后更新绑定目标.但是,会对源路径进行评估,并在每次更改源时执行其getter.其中,在SlowProperty仍然会浪费CPU周期的情况下.
我试图制作自己的延迟绑定类,但卡住了.有没有其他的活页夹可以做那样的事情?
为了完整起见,这里有两个执行类似任务的项目,但是,没有解决我遇到的问题:
DeferredBinding - 与DelayBinding类似的解决方案.但是,它使用起来有点复杂.
DelayedBindingTextBox - 使用自定义文本框控件实现延迟绑定.
谢谢!
我试图在磁盘上更新文件时收到通知。我有兴趣在发生刷新时立即收到此通知,但是,似乎 FileSystemWatcher 只会在流打开或关闭时发送事件。
在下面的代码中,我正在写入一个文件并反复将缓冲区刷新到磁盘。然而,FileSystemWatcher 只在写入开始和结束时通知我一次。
有没有其他方法可以获取这些通知?或者我应该为此使用轮询?
编码:
class Program
{
static void Main(string[] args)
{
FileSystemWatcher watcher = new FileSystemWatcher(Environment.CurrentDirectory, "Test.txt");
watcher.Changed += watcher_Changed;
watcher.EnableRaisingEvents = true;
using(TextWriter writer = new StreamWriter("Test.txt"))
{
WriteData(writer);
WriteData(writer);
WriteData(writer);
WriteData(writer);
}
Thread.Sleep(10000);
}
private static void WriteData(TextWriter writer)
{
writer.WriteLine("Hello!");
writer.Flush();
Console.WriteLine(DateTime.Now.ToString("T") + "] Wrote data");
Thread.Sleep(3000);
}
static void watcher_Changed(object sender, FileSystemEventArgs e)
{
Console.WriteLine(DateTime.Now.ToString("T") + "] Watcher changed!");
}
}
Run Code Online (Sandbox Code Playgroud)
我已更正 DateTime 的 ToString 函数以显示秒数。这是上面代码的输出:
11:37:47 AM] Watcher changed! …Run Code Online (Sandbox Code Playgroud) 我试图在一个有限高度的网格中心放置一个矩形,如下所示:
<Grid ClipToBounds="False">
<Grid Background="LightBlue" Height="10" ClipToBounds="False" Margin="0,27,0,79">
<Rectangle Height="40" Width="20" Fill="Black" VerticalAlignment="Center" HorizontalAlignment="Center" ClipToBounds="False"/>
</Grid>
</Grid>
Run Code Online (Sandbox Code Playgroud)
我原以为它看起来像这样:

但它看起来像那样:

我知道我的子矩形更大,它可以理解它剪辑,但是,我的ClipToBounds没有任何效果.阅读后,我发现Grid确实不尊重"ClipToBounds".
我试图使用Canvas,正如Dr.Wpf 在上述文章中的建议,但我似乎无法做到正确.
有什么我可以做的,使它看起来像第一张图片,而不诉诸C#代码?
谢谢!
我一直试图从代码/即时窗口手动调用Visual Studio的可视化工具,到目前为止没有任何运气.
我用以下代码编写了一个简单的控制台应用程序:
var dataset = new System.Data.DataSet();
Run Code Online (Sandbox Code Playgroud)
然后我将数据集添加到监视窗口并使用DataSet Visualizer将其可视化.正如所料,这是有效的.
完成后,我将以下代码输入到即时窗口中:
new Microsoft.VisualStudio.DebuggerVisualizers.VisualizerDevelopmentHost(dataset, typeof(EnhancedDataSetVisualizer.DataSetVisualizer)).ShowVisualizer();
Run Code Online (Sandbox Code Playgroud)
这导致以下异常(完全异常):
System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.VisualStudio.Debugger.DataSetVisualizer, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.
File name: 'Microsoft.VisualStudio.Debugger.DataSetVisualizer, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
at System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity,
….
Run Code Online (Sandbox Code Playgroud)
这对我来说真的很奇怪,因为如果我在Visual Studio中查看Debug-> Widnow-> Modules,我会看到已经加载了DataSetVisualizer.dll:
Microsoft.VisualStudio.Debugger.DataSetVisualizer.dll C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Packages\Debugger\Visualizers\Microsoft.VisualStudio.Debugger.DataSetVisualizer.dll No No Cannot find or open …Run Code Online (Sandbox Code Playgroud) 我知道TypeScript可以检测*.ts文件的编译错误.
但是,如何在AngularJS视图/模板中获得这些好处呢?例如,如果我有一个像这样的代码:
<div ng-controller="HomeController as home">
{{home.property1}}
</div>
Run Code Online (Sandbox Code Playgroud)
我定义了一个HomeController类,如果没有为HomeController类定义"property1",我想收到编译错误.
有可能吗?
.net ×6
c# ×6
wpf ×4
xaml ×2
angularjs ×1
cookies ×1
data-binding ×1
diff ×1
javascript ×1
react-native ×1
samesite ×1
typescript ×1
windows ×1