小编Roe*_*elF的帖子

如何在UIElement.Margin上为绑定设置FallbackValue?

考虑以下代码:

<UserControl x:Name=root>
....
    <TextBlock Text="Hello World" Margin="{Binding ElementName=root, Path=LeftButtonMargin}"/>
....
</UserControl>
Run Code Online (Sandbox Code Playgroud)

现在,设置FallBackvalue绑定的语法是什么?
我已经尝试了一些不同的选项,但我似乎无法找到正确的语法:

Margin="{Binding ElementName=root, Path=LeftButtonMargin, FallBackValue={}10,10,0,0}"
Margin="{Binding ElementName=root, Path=LeftButtonMargin, FallBackValue={}{10,10,0,0}}"
Margin="{Binding ElementName=root, Path=LeftButtonMargin, FallBackValue={}"10,10,0,0"}"
Run Code Online (Sandbox Code Playgroud)

或者这根本不可能?基本上,我在设计时需要这些值......

syntax wpf xaml binding

7
推荐指数
2
解决办法
6155
查看次数

XAML - 抛出XmlParseException的MergedDictionaries"项已添加".为什么?

我有以下,很容易重现问题:我正在创建一个使用其他文件资源的xaml应用程序.要做的就是创建一个MergedDictionaries-tag来合并本地和全局资源,如下所示:

<Window>
<Window.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="path.to.xaml.file"/>
            <ResourceDictionary>
                <Style TargetType="{x:Type Border}" x:Key="TypeBlock">

                </Style>
                <Style TargetType="{x:Type Border}" x:Key="SetBlock">

                </Style>
            </ResourceDictionary>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Window.Resources>
....
</Window>
Run Code Online (Sandbox Code Playgroud)

如果运行它,这段代码会崩溃:

Item has already been added. Key in dictionary: 'System.Windows.Controls.Border'  Key being added: 'System.Windows.Controls.Border'
Run Code Online (Sandbox Code Playgroud)

如果我们删除MergedDictionaries-tag,代码将按预期运行:

<Window>
<Window.Resources>
    <Style TargetType="{x:Type Border}" x:Key="TypeBlock">

    </Style>
    <Style TargetType="{x:Type Border}" x:Key="SetBlock">

    </Style>
</Window.Resources>
</Window>
Run Code Online (Sandbox Code Playgroud)

我不明白为什么它在我们使用Merged Resources时抛出异常.当然,修复现在很容易(将资源调到较低的水平).很高兴知道这是否是"正常"行为......

wpf xaml styles resourcedictionary

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

用于IEnumerable <string>的Visual Studio Visualizer

TL; DR
有谁知道如何写一个调试展台在Visual Studio 2012中,C#,所以我可以想像IEnumerable<string>,string[]或类似物体?

更多信息
Visual Studio Debug Visualizer很棒,我经常使用一些流行的(Mole).但是,现在是推出一些自定义可视化器的时候了.我开始使用一个简单的字符串可视化工具:

[assembly: System.Diagnostics.DebuggerVisualizer(typeof(My.Namespace.DebuggerSide),
                                            typeof(VisualizerObjectSource),
                                            Target = typeof(string),
                                            Description = "Awesome Visualizer")]
Run Code Online (Sandbox Code Playgroud)

DebuggerSide的代码基本上是模板中的示例:

public class DebuggerSide : DialogDebuggerVisualizer
{
    protected override void Show(IDialogVisualizerService windowService, IVisualizerObjectProvider objectProvider)
    {
        if (windowService == null)
            throw new ArgumentNullException("windowService");
        if (objectProvider == null)
            throw new ArgumentNullException("objectProvider");


        var data = (string)objectProvider.GetObject();

        using (var displayForm = new VisualizerForm(data))
        {
            windowService.ShowDialog(displayForm);
        }
    }

    /// <summary>
    /// Tests the visualizer by hosting it outside of …
Run Code Online (Sandbox Code Playgroud)

c# debuggervisualizer visual-studio-2012

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

给定IP地址和子网掩码,如何计算CIDR?

好吧,我似乎无法弄明白:给出以下内容:

IP address = 192.168.1.0
Subnetmask = 255.255.255.240

使用c#,如何计算CIDR表示法192.168.1.0/28?有没有一种简单的方法来实现这一目标?我错过了什么吗?

谢谢!

.net c# ip-address subnet

5
推荐指数
3
解决办法
9283
查看次数

AutoMapper:将接口映射到抽象类 - 这可能吗?

我正在使用AutoMapper在我的应用程序的不同层之间映射对象.一方面我有一个界面,如下所示:

public interface MyRepo 
{
    IEnumerable<IRootObject> GetItems(param);
}
Run Code Online (Sandbox Code Playgroud)

IRootObject看起来像这样:

public interface IRootObject
{
    int Id { get; set; }
    DateTime? Date { get; set; }
}

public interface IFirstSubObject : IRootObject 
{
    string MyFirstProp { get; set; }
}

public interface ISecondSubObject : IRootObject 
{
    string MySecondProp { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

所以GetItems()调用实际上只返回一个数组IxxxSubObjectItems.另一方面,结构如下所示:

public abstract class MyCustomRoot
{
    protected MyCustomRoot(){}
    public int Id { get; set; }
    public DateTime? Date { get; set; } …
Run Code Online (Sandbox Code Playgroud)

c# abstract-class interface automapper

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

ObservableCollection即使在.NET 4.5中也不是线程安全的?

我现在正在撞击虚拟墙几天.BindingOperations.EnableSynchronization方法似乎只在.NET 4.5中起作用.

我写了一个有时失败的测试:

        object blah = new object();

        Application app = Application.Current == null ? new Application() : Application.Current;
        SynchronizationContext.SetSynchronizationContext(new SynchronizationContext());
        ObservableCollection<ThreadSafeObservableTestObject> collection = null;
        collection = new ObservableCollection<ThreadSafeObservableTestObject>();

        BindingOperations.EnableCollectionSynchronization(collection, blah);

        CollectionTestWindow w = new CollectionTestWindow();

        Task.Factory.StartNew(() =>
        {
            Thread.Sleep(2000);
            w.TestCollection = collection;
            collection.CollectionChanged += collection_CollectionChanged;
            collection.Add(new ThreadSafeObservableTestObject() { ID = 1, Name = "Sandra Bullock" });
            collection.Add(new ThreadSafeObservableTestObject() { ID = 2, Name = "Jennifer Aniston" });
            collection.Add(new ThreadSafeObservableTestObject() { ID = 3, Name = "Jennifer Lopez" });
            collection.Add(new …
Run Code Online (Sandbox Code Playgroud)

.net c# wpf

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

如何摆脱xaml中的元素焦点边框

在WPF中,我创建了一个自定义按钮模板,如下所示:

<ToggleButton x:Name="button" HorizontalAlignment="Left" Margin="0,0,0,0" >
        <ToggleButton.Template>
            <ControlTemplate TargetType="{x:Type ToggleButton}">
                <Grid Background="#01FFFFFF" Width="62" Height="53">
                    <Border VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Background="#01FFFFFF" IsHitTestVisible="True"/>
                    <Canvas Width="26" Height="32" x:Name="background" IsHitTestVisible="True" >
                       <!-- Omitted for brevity--->
                    </Canvas>
                </Grid>
            </ControlTemplate>
        </ToggleButton.Template>
    </ToggleButton>
Run Code Online (Sandbox Code Playgroud)

这段代码的结果是一个简单的Off按钮:
按钮,没有专注

现在,当此按钮变为鼠标焦点,然后屏幕失去焦点时,按钮会在其周围出现虚线边框,如下所示:
按钮,带虚线边框

我的问题很简单:如何摆脱这种边界?我尝试过使用这些FocusVisualStyle属性,但无法让它工作.

wpf xaml focus focusvisualstyle

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

Docker和ASP.NET Core 2.1预览1

我从这里安装了ASP.NET Core 2.1预览版1 和Visual Studio的最新预览版.

然后我按照以下步骤操作:文件>新建项目> ASP.NET核心Web应用程序>选择API,检查Enable Docker Support (Os: Linux)No Authentication.

这很好地生成了项目模板,以及带有docker撰写文件的Docker项目.这样可以很好地构建,并提取所有需要的图像.但是,当我尝试使用Docker从Visual Studio中运行它时,它似乎不起作用.

在日志中,我看到以下内容:

内容根路径:/ app
现在正在侦听:http:// [::]:80
...
请求启动HTTP/1.1 GET http:// localhost:32778 / Microsoft.AspNetCore.Hosting.Internal.WebHost:信息:请求启动HTTP/1.1 GET http:// localhost:32778 /

现在,当我尝试对http:// localhost:32778/api/values进行GET (使用Postman)时,没有看到响应:

无法获得任何响应连接到http:// localhost:32778/api/values时出错.

但!Docker日志显示正在进行请求:

Microsoft.AspNetCore.Hosting.Internal.WebHost:信息:请求启动HTTP/1.1 GET http:// localhost:32778/api/values
[40m [32minfo [39m [22m [49m:Microsoft.AspNetCore.Hosting.Internal.WebHost [ 1]请求启动HTTP/1.1 GET http:// localhost:32778/api/values
[40m [32minfo [39m [22m [49m:Microsoft.AspNetCore.Hosting.Internal.WebHost [2]请求在14.4873ms完成307 Microsoft. AspNetCore.Hosting.Internal.WebHost:信息:请求在14.4873ms 307完成

我在这里错过了什么?如果我使用IIS Express运行默认项目,一切都按预期工作.

编辑:我刚刚在ASP.NET Core 2.0上测试过,一切正常.

docker asp.net-core asp.net-core-2.1

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

ObservableCollection DataGrid

我将ObservableCollection绑定到dataGrid itemssource.

只有在我们添加,删除,删除时才会调用可观察Collection的collectionChangedEvent.但是当我们更新记录时不会触发.

如何为Update更新事件?

wpf observablecollection wpfdatagrid

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

wpf MvvM Command数据上下文问题

我用谷歌搜索,但找不到我想要的东西.我有几个问题......

这是我的代码结构:

我的命令类:

 public class BrowseCommand : ICommand 
 {
   //Code here
 }
Run Code Online (Sandbox Code Playgroud)

在ViewModel中:

public class ExampleViewModel
{
    public ExampleViewModel()
    {
        BrowseCommand = new BrowseCommand();
    }

    public ICommand BrowseCommand
    {
        get;
        private set;
    }
  //More Code...
}
Run Code Online (Sandbox Code Playgroud)

MainWindow.xaml.cs:

 public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        DataContext = new ExampleViewModel();
    }
}
Run Code Online (Sandbox Code Playgroud)

MainWindow.xaml:

Window x:Class="Ship32RcParser.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525" >

   <Grid>
       <Button  Content="Browse" Command="{Binding BrowseCommand}"/>
       <Button  Content="Search" Command="{Binding I_NEED_HELP_HERE}"  />
   </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)



我知道我的浏览工作正常,因为MainWindow.xaml.cs有

DataContext = new ExampleViewModel(); …
Run Code Online (Sandbox Code Playgroud)

c# wpf mvvm model-binding command-pattern

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