小编Sco*_*ott的帖子

WPF日历控件保持鼠标

所以我Calendar在VS2010的全新WPF应用程序中删除了MainWindow.xaml上的标准WPF 控件.如果我单击日历中的某一天,然后尝试单击该应用程序的"关闭"按钮,则必须在关闭按钮上单击两次才能接受该单击.它表现得好像Calendar没有释放鼠标与应用程序的其余部分进行交互.

我已经改为Focusable假,没有任何改变,我已经尝试重写PreviewOnMouseUp并呼吁ReleaseMouseCapture()无济于事.我已经做了同样的事情MouseLeave,并MouseLeftButtonUp具有相同的结果.鉴于这些东西都不起作用我怀疑我正在咆哮错误的树.虽然也许我的GoogleFu今天不能满足要求,但谷歌已经没有任何注意事项了.

有任何想法吗?

c# wpf calendar

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

在ResourceDictionary中为DataTemplate分配事件或命令

我有以下课程:

public class Day
{
    public int Date { get; set; }
    public String DayName { get; set; }

    public Day()
    {

    }

    public Day(int date, string dayName)
    {
        Date = date;
        DayName = dayName;

        CommandManager.RegisterClassCommandBinding(typeof(Day), new CommandBinding(DayClick, new ExecutedRoutedEventHandler(OnExecutedDayClick), 
            new CanExecuteRoutedEventHandler(OnCanExecuteDayClick)));
    }

    public static readonly RoutedCommand DayClick = new RoutedCommand("DayClick", typeof(Day));

    private static void OnCanExecuteDayClick(object sender, CanExecuteRoutedEventArgs e)
    {
        ((Day)sender).OnCanExecuteDayClick(e);
    }

    private static void OnExecutedDayClick(object sender, ExecutedRoutedEventArgs e)
    {
        ((Day)sender).OnExecutedDayClick(e);
    }

    protected virtual void OnCanExecuteDayClick(CanExecuteRoutedEventArgs e)
    {
        e.CanExecute = …
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml

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

WPF RichTextBox SelectionChanged性能

我正在使用WPF RichTextBox处理一个文字处理器类型的应用程序.我正在使用SelectionChanged事件使用以下代码确定RTB中当前选择的字体,字体粗细,样式等:

private void richTextBox_SelectionChanged(object sender, RoutedEventArgs e)
    {
        TextSelection selection = richTextBox.Selection;

        if (selection.GetPropertyValue(FontFamilyProperty) != DependencyProperty.UnsetValue)
        {
            //we have a single font in the selection
            SelectionFontFamily = (FontFamily)selection.GetPropertyValue(FontFamilyProperty);
        }
        else
        {
            SelectionFontFamily = null;
        }

        if (selection.GetPropertyValue(FontWeightProperty) == DependencyProperty.UnsetValue)
        {
            SelectionIsBold = false;
        }
        else
        {
            SelectionIsBold = (FontWeights.Bold == ((FontWeight)selection.GetPropertyValue(FontWeightProperty)));
        }

        if (selection.GetPropertyValue(FontStyleProperty) == DependencyProperty.UnsetValue)
        {
            SelectionIsItalic = false;
        }
        else
        {
            SelectionIsItalic = (FontStyles.Italic == ((FontStyle)selection.GetPropertyValue(FontStyleProperty)));
        }

        if (selection.GetPropertyValue(Paragraph.TextAlignmentProperty) != DependencyProperty.UnsetValue)
        {
            SelectionIsLeftAligned = (TextAlignment)selection.GetPropertyValue(Paragraph.TextAlignmentProperty) == TextAlignment.Left; …
Run Code Online (Sandbox Code Playgroud)

wpf wpf-controls

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

在 EF Core 3.1 中删除实体会导致“实体类型之间的关联已被切断...外键不可为空”

我正在用 EF Core 3.1 和 WPF (.NET Core 3.1) 替换旧的数据库管理 UI(大约 2005 年)。因为它是一个现有数据库,其架构我无法更改,所以我使用 Scaffold-DbContext 为我创建实体类。到目前为止,一切都很好。

然后我使用以下代码来获取一些要使用的数据:

_mainFood = DbContext.MainFoods.Include(m => m.MainFoodsFoodGroupsBridge)
            .Include(m => m.MainFoodsSourcesBridge).FirstOrDefault(m => m.RefNum == Id);
Run Code Online (Sandbox Code Playgroud)

我得到了我所期望的单个 MainFoods 记录,以及 MainFoodsFoodGroupsBridge 和 MainFoodsSourcesBridge 中的几行,也正如我所期望的那样。

我遇到的问题与 MainFoodsFoodGroupsBridge 和 MainFoods 之间的关系有关。Scaffold-DbContext 创建的关系如下:

modelBuilder.Entity<MainFoodsFoodGroupsBridge>(entity =>
        {
            entity.HasKey(e => e.TableKey);

            entity.HasIndex(e => new { e.RefNum, e.FoodGroupId })
                .HasName("IX_UniqueRefNum_FoodGroupID")
                .IsUnique();

            entity.Property(e => e.FoodGroupId).HasColumnName("FoodGroupID");

            entity.HasOne(d => d.FoodGroup)
                .WithMany(p => p.MainFoodsFoodGroupsBridge)
                .HasForeignKey(d => d.FoodGroupId)
                .OnDelete(DeleteBehavior.ClientSetNull)
                .HasConstraintName("FK_MainFoodsFoodGroupsBridge_FoodGroupLookup");

            entity.HasOne(d => d.RefNumNavigation)
                .WithMany(p => p.MainFoodsFoodGroupsBridge)
                .HasForeignKey(d => d.RefNum)
                .OnDelete(DeleteBehavior.ClientSetNull) …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework ef-core-3.1

5
推荐指数
0
解决办法
1458
查看次数

坚持C#中的序列化

我有一个类在C#中处理序列化,称为Serializer.它的实现如下:

public class Serializer
{
    public void SerializeRulesManager(string filename, RulesManager rulesManager)
    {
        Stream stream = File.Open(filename, FileMode.Create);        
        try
        {
            BinaryFormatter binaryFormatter = new BinaryFormatter();
            binaryFormatter.Serialize(stream, rulesManager);             
        }
        finally
        {
            stream.Close();
        }                
    }

    public RulesManager DeserializeRulesManager(string filename)
    {
        RulesManager rulesManager = null;
        Stream stream = File.Open(filename, FileMode.Open);
        try
        {
            BinaryFormatter binaryFormatter = new BinaryFormatter();
            rulesManager = (RulesManager)binaryFormatter.Deserialize(stream);                
        }
        finally
        {
            stream.Close();                
        }                       
        return rulesManager;
    }
}    
Run Code Online (Sandbox Code Playgroud)

非常简单的东西,它适用于我的所有单元测试.RulesManager被正确序列化和反序列化,因此我知道图表是好的.

问题来自以下代码:

public void Save(string filename)
{
    Cursor.Current = Cursors.WaitCursor;
    try
    {
        _serializer.SerializeRulesManager(filename, _rulesManager);
    } …
Run Code Online (Sandbox Code Playgroud)

c# serialization binaryformatter

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