RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-373173

denisnumb's questions

Martin Hope
denisnumb
Asked: 2024-03-02 13:18:47 +0000 UTC

Android:RecyclerView notificationItemChanged 在重新输入片段时不起作用

  • 5

在 Android 应用程序中,有一个用于RecyclerView显示元素的片段。

最初,元素没有数据,但是当您单击它们时,将为每个元素启动一个单独的函数loadElementData,将数据加载到元素中。

每个元素在加载时都会显示一个旋转的图标ProgressBar。

加载数据没有问题,一切正常。

问题恰恰出在加载指示的显示上,或者更准确地说,问题出在其中一种情况下指示器不会消失的事实。


由于fragment工作在用户可以退出fragment并且下载不会被取消的viewModel级别,因此有4种可能的情况:Activity

  1. 用户点击元素,指示器显示,数据加载,指示器消失。-作品

  2. 用户点击元素,显示指示器,用户重新输入相同的片段,但使用不同的元素集,加载被取消,进入带有加载元素的片段后,它们不再加载,指示器被隐藏。-作品

  3. 用户点击元素,指示器显示,用户离开片段,数据加载,用户返回片段,数据加载,指示器隐藏。-作品

  4. 用户点击元素,指示器被显示,用户退出片段并立即返回,数据正在加载,指示器被显示,数据已经加载,指示器仍然显示。

问题出在场景 4 上。由于某种原因,在这种情况下,加载指示器不会消失。可能是什么原因造成的?我该如何解决这个问题?

代码:

private fun loadItemData(item: MyItem) {
    val index = viewModel.currentList.value!!.indexOf(item)
    item.isDataLoading = true
    itemAdapter.notifyItemChanged(index)

    val job = requireActivity().lifecycleScope.launchPausing(Dispatchers.IO) {
        var itemData: ItemData? = null
        try {
            itemData = async { getItemData(item.id) }.await()
            itemData?.let { item.data = it }
        } catch (e: CancellationException){
            Log.d("debug", "loading canceled")
        } finally {
            item.isDataLoading = false
            activity?.runOnUiThread {
                itemAdapter.notifyItemChanged(index)
            }
        }
    }
    viewModel.loadItemDataJobs.add(job)

    requireActivity().lifecycleScope.launch(Dispatchers.IO) {
        job.join()
        if (job in viewModel.loadItemDataJobs)
            viewModel.loadItemDataJobs.remove(job)
    }
}

使用该库,pausing-coroutine-dispatcher我可以暂停和恢复 和 中的协onPause程onResume。此类协程是使用启动的launchPausing

implementation 'com.github.Koitharu:pausing-coroutine-dispatcher:1.0'
android
  • 1 个回答
  • 28 Views
Martin Hope
denisnumb
Asked: 2023-11-17 02:49:13 +0000 UTC

Python:检查元素是否在字典中并使用它的哪种选项在性能方面更好?

  • 5

有一个字典,其结构如下:

data = {
    'key': {
        'subkey': 'value'
    }
}

并且需要获取嵌套字典的值,前提是键的存在'key'未知data。

可以这样写:

value = None
if 'key' in data:
    value = data['key']['subkey']

或者排成一行。我经常使用2种方法。

第一的:

value = None if 'key' not in data else data['key']['subkey']

第二:

value = None if not (subdict := data.get('key')) else subdict['subkey']

问题是:在短时间内多次执行此类检查的情况下,使用哪个选项有区别吗?也许有一些更简单的方法?

python
  • 2 个回答
  • 34 Views
Martin Hope
denisnumb
Asked: 2022-07-21 15:51:21 +0000 UTC

C# WPF:如何在所有窗口之上打开一个窗口,以便它不会最小化全屏应用程序?

  • 4

在 Windows 上,当您使用ALT+ SHIFT (反之亦然)切换语言时,会在显示所选语言的所有窗口顶部出现一个窗口。


在 WPF 应用程序中,必须实现相同的窗口:

我已经实现了一个带有属性的窗口,Topmost=true因此它始终位于所有窗口的顶部。但是有一个问题——当你打开这个窗口时,它会最小化所有全屏应用程序。也就是说,如果我在任何全屏游戏中打开它,游戏窗口都会崩溃。同时,Windows 布局切换窗口不会发生这种情况。

据我了解,Windows 不使用窗口,而是使用诸如 Discord 之类的叠加层。但是 Discord 会寻找正在运行的游戏,而 Windows 窗口可以绘制在任何窗口之上。

如何实现相同的窗口?最好不使用 DirectX 库,以便此覆盖不仅适用于特定窗口

c# wpf
  • 1 个回答
  • 181 Views
Martin Hope
denisnumb
Asked: 2022-07-17 19:45:16 +0000 UTC

C#:为什么以编程方式按下键盘快捷键不适用于所有窗口?

  • 2

有代码,当按下某个键/键组合时,以编程方式按下组合键CTRL+ A (Select text in line)。


问题:

在记事本、浏览器、命令提示符和其他窗口中一切正常,但不适用于游戏中的文本字段(如Dota 2、CS:GO)。

也就是说,当我G 按下(调用CTRL+的按钮A)时,什么也没有发生。这种情况下,调用了按CTRL+的函数A,即按键G不被游戏截取。


Python中的解决方案

例如,以一种或另一种方式,这段代码在浏览器和游戏中都Python可以正常工作,甚至不会从其他程序中截获密钥:

import keyboard
keyboard.add_hotkey('G', callback=lambda: keyboard.press_and_release('ctrl+a'))
keyboard.wait()

据我所知,它也指的是user32.dll,但为什么它有效,但C#不是 - 我不明白。

这是keyboard.press_and_release()引用send().


编码:

using System;
using System.Linq;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Input;

namespace Test
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            // при нажатии на кнопку G программа нажмет CTRL+A 
            NHotkey.Wpf.HotkeyManager.Current.AddOrReplace("G", Key.G, ModifierKeys.None, (sender, e) => { PressCtrlA(sender, e); });
        }

        // метод для ожидания освобождения всех клавиш клавиатуры
        // чтобы программное нажатие CTRL+A сработало корректно
        private static readonly Key[] keys = Enum.GetValues(typeof(Key)).Cast<Key>().Where(key => key != Key.None).ToArray();
        private async Task WaitForKeysReleaseAsync()
        {
            int threshold = 0;
            while (Keyboard.Modifiers != ModifierKeys.None || keys.Any(key => Keyboard.IsKeyDown(key)))
            {
                if (threshold++ == 100) // ~5 секунд
                    throw new TimeoutException("Keyboard release timed out or stuck keys");
                await Task.Delay(50);
            }
        }

        // подождать пока освободится клавиатура и нажать CTRL+A
        private async void PressCtrlA(object sender, EventArgs e)
        {
            await WaitForKeysReleaseAsync();
            KeyboardManager.PressHotkey(Key.A, ModifierKeys.Control);
        }
    }
}

该代码使用一个KeyboardManager用于编程击键的类,这是其中的代码:https ://pastebin.com/xRtv3drq

包也用NHotkey.Wpf

c# winapi
  • 1 个回答
  • 62 Views
Martin Hope
denisnumb
Asked: 2022-07-16 22:16:23 +0000 UTC

C#:如何订阅静态类中的事件?

  • 0

该应用程序使用一个包NHotkey.Wpf来分配全局热键。

有一个带有public static void Enable()添加预定义热键的方法的静态类。

问题:如果用户已经注册了这样的密钥,该方法将返回错误, NHotkey.Wpf.HotkeyAlreadyRegistered.

在普通的非静态类中,我只需订阅事件并将其作为错误文本重定向到控制台。

NHotkey.Wpf.HotkeyManager.HotkeyAlreadyRegistered += (sender, e) => { Console.WriteLine("This Hotkey already registered!"); };

在静态类中订阅此事件的位置 - 我不明白,因为 没有类构造函数。将此行添加到方法的开头Enable()也没有任何作用。

public App我还尝试直接在文件的构造函数中订阅事件App.xaml.cs,但这也无济于事。

不确定通过排除每个热键是否正确try-except。


编码:

static class Test
{
    public static void Enable()
    {

        NHotkey.Wpf.HotkeyManager.HotkeyAlreadyRegistered += HotkeyManager_HotkeyAlreadyRegistered;

        NHotkey.Wpf.HotkeyManager.Current.AddOrReplace("hotkey1", Key.Q, ModifierKeys.Control, (sender, e) => { Console.WriteLine("hotkey1"); });
        NHotkey.Wpf.HotkeyManager.Current.AddOrReplace("hotkey2", Key.W, ModifierKeys.Control, (sender, e) => { Console.WriteLine("hotkey2"); });
        NHotkey.Wpf.HotkeyManager.Current.AddOrReplace("hotkey3", Key.E, ModifierKeys.Control, (sender, e) => { Console.WriteLine("hotkey3"); });
            . . . 
        // таких клавиш около 10 и прописывать try-catch для каждой кажется мне неуместным
    }

    private static void HotkeyManager_HotkeyAlreadyRegistered(object sender, NHotkey.Wpf.HotkeyAlreadyRegisteredEventArgs e)
    {
        Console.WriteLine("Клавиша уже зарегистрирована");
    }
}
c#
  • 1 个回答
  • 46 Views
Martin Hope
denisnumb
Asked: 2022-07-16 16:56:28 +0000 UTC

C#:如何不仅在应用程序内部模拟来自键盘的文本输入?

  • 0

有必要编写一个接受任何文本形式的字符串的方法,结果应该将此文本写入任何输入字段,模拟键盘输入。

我最近问了一个类似的问题,但它是关于按特定的键盘键,其代码已经在表单中enum。这里我们讨论的是一般的任何字符——也就是说,应该模拟这样的文本的输入:“😀😃³⁸⁽⋜𝒲”等。


我试过的:

System.Windows.Forms.SendKeys.SendWait("😀😃³⁸⁽⋜𝒲");

这仅适用于应用程序中的输入字段,因为 Keyboard只关注两个 x。(从这里采取的解决方案)

var text = "😀😃³⁸⁽⋜𝒲";
var target = Keyboard.FocusedElement;
var routedEvent = TextCompositionManager.TextInputEvent;

target.RaiseEvent(
  new TextCompositionEventArgs(
    InputManager.Current.PrimaryKeyboardDevice,
    new TextComposition(InputManager.Current, target, text))
  { RoutedEvent = routedEvent }
);
c#
  • 1 个回答
  • 57 Views
Martin Hope
denisnumb
Asked: 2022-06-27 21:20:09 +0000 UTC

C#:如何从谷歌翻译响应中提取长文本的翻译?

  • 0

有一种方法是通过谷歌翻译不使用 翻译文本API v2,即通过通常的WebClient。

该方法接受参数text- 源文本和to- 文本需要翻译成的语言。源文本的语言设置为"auto",即应自动确定。

public static string Translate(string text, string to)
{
   var url = $"https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl={to}&dt=t&q={HttpUtility.UrlEncode(text)}";
   var webClient = new WebClient { Encoding = Encoding.UTF8 };
   var result = webClient.DownloadString(url);
   try
   {
       result = result.Substring(4, result.IndexOf("\"", 4, StringComparison.Ordinal) - 4);
       return result;
   }
   catch (Exception e)
   {
       Console.WriteLine($"Transalte Error: {e.Message}");
       return null;
   }
}

问题:

使用几个单词的简单文本,一切正常,但如果您指定多行(带有 content \n)或句子的文本,该方法仅返回第一句的翻译。

原因:

这是因为谷歌翻译\n不是在一行中返回单个句子(或字符串 ( ))的翻译,而是在几行中返回。

例如,当使用此类输入数据调用方法时

string text = @"Нижняя сторона крыльев менее яркая, но более пёстрая. Она коричневато-бурая, с разнообразными красноватыми и белыми пятнами и серыми разводами. Снизу на передних крыльях повторяется рисунок верхней стороны, который дополняется голубыми кольцами в центральной ячейке. Нижняя сторона задних крыльев коричневатая, с замысловатым мраморовидным рисунком, образованным за счет тёмных штрихов и извилистых линий. Также у переднего края заднего крыла находится светлое пятно";
Translate(text, "en");

该方法只会返回第一句

"The underside of the wings is less bright, but more variegated. "

结果将是这样的:

[[["The underside of the wings is less bright, but more variegated. ","Нижняя сторона крыльев менее яркая, но более пёстрая.",null,null,3,null,null,[[]],[[["d79f3353813f458ef00a8442f9b7b2b6","ru_en_2022q1.md"]]]],["It is brownish-brown, with a variety of reddish and white spots and gray stains. ","Она коричневато-бурая, с разнообразными красноватыми и белыми пятнами и серыми разводами.",null,null,3,null,null,[[]],[[["d79f3353813f458ef00a8442f9b7b2b6","ru_en_2022q1.md"]]]],["From below on the forewings, the pattern of the upper side is repeated, which is complemented by blue rings in the central cell. ","Снизу на передних крыльях повторяется рисунок верхней стороны, который дополняется голубыми кольцами в центральной ячейке.",null,null,3,null,null,[[]],[[["d79f3353813f458ef00a8442f9b7b2b6","ru_en_2022q1.md"]]]],["The underside of the hindwings is brownish, with an intricate marble-like pattern formed by dark strokes and sinuous lines. ","Нижняя сторона задних крыльев коричневатая, с замысловатым мраморовидным рисунком, образованным за счет тёмных штрихов и извилистых линий.",null,null,3,null,null,[[]],[[["d79f3353813f458ef00a8442f9b7b2b6","ru_en_2022q1.md"]]]],["There is also a light spot at the anterior edge of the hind wing.","Также у переднего края заднего крыла находится светлое пятно",null,null,3,null,null,[[]],[[["d79f3353813f458ef00a8442f9b7b2b6","ru_en_2022q1.md"]]]]],null,"ru",null,null,null,1,[],[["ru"],null,[1],["ru"]]]

而文本来自一个句子,该方法将正确返回,因为只有一个句子。

解决方案尝试:

\n我尝试用->\\n和\r->替换换行符和回车符\\r,然后在结果文本中返回它们并且它有效,但在我看来这不是正确的解决方案。而且,带点的文本(来自几个句子)仍然作为一个句子返回,这样替换点是不正确的。

在这个对象中,可以像列表一样Python简单地遍历它并获取必要的数据,但是由于强类型,我什至不知道如何反序列化这个对象。forC#

也许还有另一种方式?

c#
  • 1 个回答
  • 75 Views
Martin Hope
denisnumb
Asked: 2022-06-25 02:18:45 +0000 UTC

C# WPF:以编程方式调用热键的正确方法是什么?

  • 2

在 WPF 应用程序中,我使用一个模块NHotkey来处理热键。

using System;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Input;


namespace test
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            NHotkey.Wpf.HotkeyManager.Current.AddOrReplace("Test", Key.G, ModifierKeys.Alt, Test);
        }

        async private static void Test(object sender, EventArgs e)
        {
            await Task.Delay(300);
            KeyboardManager.ModifiedKeyStroke(Key.A, ModifierKeys.Control);
        }

    }
}

感谢构造函数中的第 2 行MainWindow(),当您按下ALT+快捷键时,G将调用该方法,该方法以编程方式按下+Test()组合键来选择任何输入字段中的文本。CTRLA


问题:

如果您从代码中删除该行,那么当您以编程方式按+await Task.Delay(300);时,输入字段中的文本将不会突出显示,因为该方法会立即调用,即使是在按钮时(来自+组合)没有被释放。CTRLAALTALTG

结果是一个键盘快捷键ALT++ ,由于额外的CTRL键A,它不会突出显示文本ALT。

临时解决方案:

为了解决这个问题,我在方法代码中添加了 300ms 的延迟,以留出释放Test()按钮的时间。在这种情况下,如果在按下后 300 毫秒内释放,从+突出显示文本有效,但这不是问题的正常解决方案。ALTCTRLA


此外,我想到在调用该方法之前以某种方式“按下”所有按下的键,但这是正确的吗?

代码使用类KeyboardManager,这里是它的代码:https ://pastebin.com/f1xmZUW0

c# wpf
  • 1 个回答
  • 90 Views
Martin Hope
denisnumb
Asked: 2022-06-24 04:16:27 +0000 UTC

C# WPF:如何以编程方式按下键盘快捷键?

  • 1

WPF 应用程序有一个在按下+Test()组合键时调用的方法。CTRLG

test方法调用有效,因为字符串从方法的第一行打印到控制台。


CTRL该方法应该以编程方式按下+组合键A以突出显示任何输入字段中的文本,但事实并非如此。

我尝试了两种方法:


第一:接受字符串的方法System.Windows.Forms.SendKeys.SendWait(),其中^- CTRL- 根据文档

private void Test(object sender, EventArgs e)
{
    Console.WriteLine("test");
    SendKeys.SendWait("^A");
}

但是,没有紧迫感。


第二:通过实施user32.dll,解决方案取自这里:

[DllImport("user32.dll", SetLastError = true)]
static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, UIntPtr dwExtraInfo);
public static void PressKey(Keys key, bool up)
{
    const int KEYEVENTF_EXTENDEDKEY = 0x1;
    const int KEYEVENTF_KEYUP = 0x2;
    if (up)
        keybd_event((byte)key, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, (UIntPtr)0);
    else
        keybd_event((byte)key, 0x45, KEYEVENTF_EXTENDEDKEY, (UIntPtr)0);
}

private void Test(object sender, EventArgs e)
{
    Console.WriteLine("test");
    PressKey(Keys.ControlKey, up: false);
    PressKey(Keys.A, up: false);
    PressKey(Keys.A, up: true);
    PressKey(Keys.ControlKey, up: true);
}

但在这种情况下,什么也没有发生。


我的错误是什么?

c# wpf
  • 1 个回答
  • 194 Views
Martin Hope
denisnumb
Asked: 2022-08-18 00:16:51 +0000 UTC

Python:生成列表时如何不添加不满足条件的元素?

  • 0

有这样一个列表,你需要得到一个列表,其中只包含那些为数字的字符串

elements = ['1', 'sdf2', '3', '32', '2sf']

在分支中生成列表时如何else根本不添加元素?

这是不可能的 - 没有分支else

result = [element if element.isdigit() for element in elements]

因此,您必须添加'', 或None其他内容。如何不添加元素?

result = [element if element.isdigit() else '' for element in elements]
python
  • 1 个回答
  • 10 Views
Martin Hope
denisnumb
Asked: 2022-08-14 19:55:06 +0000 UTC

Selenium Python:找不到并单击按钮

  • 1

在此页面(或任何其他单选投票)上,您需要单击一个“投票”按钮。

在此处输入图像描述

首先,您需要选择第一个答案选项以使按钮可用:

driver.find_element_by_css_selector('.l_IR7').click()

有用。


之后我按下按钮,但没有任何反应。

driver.find_element_by_css_selector('._C7zL').click()

我试图通过 接收xpath,结果出现错误:

driver.find_element_by_xpath('/html/body/div[2]/div[3]/div/div[2]/div/div[2]/div[1]/div/div/div[3]/div[4]/div/div/a/div').click()
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"/html/body/div[2]/div[3]/div/div[2]/div/div[2]/div[1]/div/div/div[3]/div[4]/div/div/a/div"}

我还尝试设置延迟并等待selenium,以防按钮可能暂时不可见。但它没有给出结果。


编码:

from selenium import webdriver
import pickle

# сохранить cookie
def save_cookies():
    input('\n\nНажмите Enter если можно сохранять куки\n\n')
    pickle.dump(driver.get_cookies(), open("cookies.pkl","wb"))

options = webdriver.ChromeOptions()
options.add_argument("start-maximized")
options.add_experimental_option("useAutomationExtension", False)
options.add_experimental_option("excludeSwitches", ["enable-automation"])
driver = webdriver.Chrome(executable_path='chromedriver.exe', chrome_options=options)
driver.get('https://otvet.mail.ru/question/228411992')

# раскомментировать строку ниже, чтобы сохранить cookie (нужно нажать enter в консоли после авторизации)
# save_cookies()

# загрузка cookie
cookies = pickle.load(open("cookies.pkl", "rb"))
for cookie in cookies:
    driver.add_cookie(cookie)
driver.refresh()

# выбор первого варианта голосования
driver.find_element_by_css_selector('.l_IR7').click()

driver.find_element_by_xpath('/html/body/div[2]/div[3]/div/div[2]/div/div[2]/div[1]/div/div/div[3]/div[4]/div/div/a/div').click()

这可能是什么原因以及如何单击此按钮?

python
  • 1 个回答
  • 10 Views
Martin Hope
denisnumb
Asked: 2022-03-11 02:07:03 +0000 UTC

WPF Visual Studio:主窗口无法缩放以适应 Windows 屏幕

  • 0

重新安装 Visual Studio 后,任何 WPF 项目中的主窗口都不再缩放到在 Windows 中选择的比例。我将屏幕比例设置为 125%,并且在窗口之前和其中的所有文本都增加了大小。现在,它是与 100% 缩放时保持相同大小的主窗口。如何解决?

除了重新安装之外,我唯一做的就是根据此处的说明设置值:link

setx VSXAML_DISABLE_ON_DEMAND_RESOURCE_VALUES 1

这是一个例子:

界面比例 125% 主窗口和对话框

两个窗口的大小 -Height="450" Width="800"

在此处输入图像描述

因此,比例为150%

在此处输入图像描述

我提醒你,窗户的大小是一样的。

可以做些什么呢?


主要代码:

<Window x:Class="TestWpfApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:TestWpfApp"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800"
        Background="DarkGray">
    <Grid Background="#222222">
        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition Height="50"/>
        </Grid.RowDefinitions>
        <Button x:Name="btn" Grid.Row="1" Content="Button"/>
    </Grid>
</Window>

对话:

<Window x:Class="TestWpfApp.Dialog"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:TestWpfApp"
        mc:Ignorable="d"
        Title="Dialog" Height="450" Width="800" Opacity="0.5">
    <Grid>
        <TextBlock Text="Test Text" FontSize="25"/>
    </Grid>
</Window>
wpf
  • 1 个回答
  • 10 Views
Martin Hope
denisnumb
Asked: 2022-10-07 14:20:11 +0000 UTC

C# WPF:列表项方法上的绑定在删除时是否被删除?

  • 0

这个问题很简单,但我找不到任何关于它的信息

我有ListView250 多件物品。

元素是在循环中动态添加的,其中一个被调用的方法附加到一个元素上的双击:

item.MouseDoubleClick += MyMethod();

然后,通过某些用户操作,列表中的所有元素都将被清除,并添加新元素和新值。还为它们添加了双击事件。


问题是,当它们被删除时,旧的侦听器是否与元素一起被删除ListView_.Items.Clear()?

如果不是,如何断开它们是正确的?有这个需要吗?

c#
  • 1 个回答
  • 10 Views
Martin Hope
denisnumb
Asked: 2022-09-24 01:16:37 +0000 UTC

C# WPF:如何为 MenuItem 设置背景和样式图像?

  • 0

我有一个样式ContextMenu,我只设置了背景并删除了笔画:

<Style x:Key="TrayIconStyle" TargetType="ContextMenu">
       <Setter Property="Background" Value="#222222"/>
       <Setter Property="BorderThickness" Value="0"/>
</Style>

对于MenuItem这个菜单的对象,我也做了一个样式。根据我的想法,它应该将图标和文本设置为StackPanel并稍微移动悬停时的文本(IsMouseOver):

<Style TargetType="MenuItem">
    <Setter Property="Background" Value="#222222"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="MenuItem">
                <StackPanel Orientation="Horizontal">
                    <Image x:Name="_imgicon" Stretch="Fill" Source="{Binding Icon,RelativeSource={RelativeSource TemplatedParent}}" />
                    <TextBlock Foreground="Gray" FontSize="14" Margin="5 0 0 0" VerticalAlignment="Center" x:Name="_txt" Text="{Binding Header,RelativeSource={RelativeSource TemplatedParent}}" />
                </StackPanel>
                <ControlTemplate.Triggers>
                    <Trigger Property="IsMouseOver" Value="true">
                        <Setter TargetName="_txt" Property="Foreground" Value="White"/>
                        <Setter TargetName="_txt" Property="Margin" Value="8 0 0 0"/>
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

然而,所有的工作是鼠标悬停时的文本及其偏移“动画”。出于某种原因,该图标没有显示,并且左侧有某种白条,我还想对其应用背景颜色#222222:

在此处输入图像描述

我的错误是什么?


创建上下文菜单:

<ContextMenu Style="{StaticResource TrayIconStyle}">
    <MenuItem Header="Open">
        <MenuItem.Icon>
            <Image Source="/ImgSrc/logo.ico" />
        </MenuItem.Icon>
    </MenuItem>
    <MenuItem Header="Exit"/>
</ContextMenu>
c#
  • 1 个回答
  • 10 Views
Martin Hope
denisnumb
Asked: 2022-09-22 01:31:24 +0000 UTC

C# WPF:在任务栏中隐藏应用程序图标,窗口消失几毫秒

  • 1

如果您在窗口上调用该属性ShowInTaskbar = false,则该窗口将在一瞬间消失并重新出现,就好像在其上调用了方法一样Hide(); Show()。任务栏上的图标消失。

我怎样才能摆脱这个问题?或者它是一个无法绕过的功能?

c#
  • 1 个回答
  • 10 Views
Martin Hope
denisnumb
Asked: 2022-09-18 16:19:29 +0000 UTC

C#:如何简化 try-catch 构造?

  • 0

很多时候,当从字典中获取一些数据时,您必须在代码中使用它try-catch,而这些数据可能不在其中。

我通常这样做:

int result;
try
{
    // для примера какой-либо индекс и ключ
    result = MyDict[SomethingIndex]["SomethingKey"];
}
catch
{
    result = 0;
}

是否有可能以某种方式减少这段代码?

c#
  • 1 个回答
  • 10 Views
Martin Hope
denisnumb
Asked: 2022-09-12 00:10:48 +0000 UTC

C# WPF:如何从代码中正确更新 <Run> 参数?

  • 1

可TextBlock用于具有在参数中指定的不同字体大小的文本片段<Run>:

<TextBlock><Run FontSize="14pt">15,</Run><Run FontSize="10pt">555333</Run></TextBlock>

它将如何从代码中胜任地更新这些值?​​​​

如果您指定 property Text,则将应用所有文本的值,并且字体将在任何地方都相同:

MyTextBlock.Text = "15,555333";

我试图这样做,但是随着数量的不断增加,然后更新文本,它被重新创建并且必须被清除:

// этот код находится в цикле
MyTextBlock.Text = null;
MyTextBlock.Inlines.Add(new Run("15,") { FontSize = 16 });
MyTextBlock.Inlines.Add(new Run("555333") { FontSize = 12 });

更新数据的正确方法是TextBlock什么?

c#
  • 1 个回答
  • 10 Views
Martin Hope
denisnumb
Asked: 2022-09-11 16:57:19 +0000 UTC

C#:如何更改变量的类型?或者删除它然后重新创建它

  • 0

有一个对象data:

Dictionary<string, object> data = new Dictionary<string, object>();

我使用这本字典,之后我需要创建一个具有相同名称的新字典(为方便起见),但具有不同的值和键参数:

Dictionary<string, string> data = new Dictionary<string, string>();

当然,我无法编译它,因为我已经有一个data. 如何覆盖对象的类型?有没有办法删除data它然后重新创建它?


与具有动态类型的语言一样,有必要:

data = [1, 2, 3]
data = 'Hello, World!'
c#
  • 1 个回答
  • 10 Views
Martin Hope
denisnumb
Asked: 2022-09-10 14:52:13 +0000 UTC

C# WPF:如何在同一行 TextBlock 中使用 2 种不同的字体?

  • 2

有一个格式为 number 的字符串[Целая часть],[6 знаков]。例子:15,555333

您需要以某种方式在参数中<TextBlock Text="15,555333"/>制作15,具有 14 字体大小的部分,其余部分555333使用 10 字体大小。

在此之前,我在 上做了类似的事情,将带有指定字体的 -codeQT简单地替换到 line中。HTML因此,在替换值时,您可以简单地通过字符串格式化将它们插入代码中。

<html><head/><body><p><span style="font-size:14pt;">15,</span><span style="font-size:10pt;">555333</span></p></body></html>

结果应如下所示:

在此处输入图像描述


这如何在xaml标记中完成?

c#
  • 1 个回答
  • 10 Views
Martin Hope
denisnumb
Asked: 2022-09-10 00:15:34 +0000 UTC

C# WPF:应用样式后按钮文本未显示在按钮上

  • 1

为按钮创建了一种样式,以便笔触和文本在悬停时更亮,而在它们关闭时更暗。

它有效,但由于某种原因,写在Content

Style

<Style x:Key="ButtonStyle" TargetType="Button">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="Button">
                <Border x:Name="border"
                        BorderThickness="1"
                        CornerRadius="5"
                        Background="#222222"
                        BorderBrush="#00a600"
                        TextBlock.Foreground="#c8c8c8"
                        TextBlock.FontSize="14"
                        TextBlock.FontWeight="Medium">
                </Border>
                <ControlTemplate.Triggers>
                    <Trigger Property="IsMouseOver" Value="True">
                        <Setter TargetName="border" Property="Background" Value="#222222" />
                        <Setter TargetName="border" Property="TextBlock.FontSize" Value="14" />
                        <Setter TargetName="border" Property="TextBlock.FontWeight" Value="Medium" />
                        <Setter TargetName="border" Property="BorderBrush" Value="#00ff00" />
                        <Setter TargetName="border" Property="TextBlock.Foreground" Value="#ffffff"/>
                    </Trigger>
                    <Trigger Property="IsEnabled" Value="False">
                        <Setter TargetName="border" Property="Background" Value="#222222" />
                        <Setter TargetName="border" Property="TextBlock.FontSize" Value="14" />
                        <Setter TargetName="border" Property="TextBlock.FontWeight" Value="Medium" />
                        <Setter TargetName="border" Property="BorderBrush" Value="#006400" />
                        <Setter TargetName="border" Property="TextBlock.Foreground" Value="#9b9b9b"/>
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

Button

<Button x:Name="TestButton"
    Content="Текст кнопки"
    Height="50" Width="150"
    Style="{StaticResource ButtonStyle}">
</Button>

但是,文本Content不可见。

在此处输入图像描述


有什么方法可以简化我的代码吗?

c#
  • 1 个回答
  • 10 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5