小编use*_*867的帖子

在Resources中创建一个控件,并在XAML WPF中重用它

我只是尝试创建一个简单的符号/几何/控件,并在同一窗口的几个地方更改和重用它.

示例:中间有圆圈的黑色正方形.

然后圆圈应该在红色和绿色之间变化(类似于单光红绿灯).使用图像可以实现.我尝试将其解决为Window资源,但我不会解释.

想法:我将它写入资源,在这里我尝试使用Canvas:

<Window.Resources>
    <Canvas x:Key="Ampel">
        <Rectangle Fill="Black" HorizontalAlignment="Left" Height="52" Stroke="Black"       VerticalAlignment="Top" Width="50"/>
        <Ellipse x:Name="RedGreen" Fill="Red" HorizontalAlignment="Left" Height="27" Margin="11,12,0,0" Stroke="Black" VerticalAlignment="Top" Width="28" RenderTransformOrigin="0.214,0.256"/>
    </Canvas>
</Window.Resources>
Run Code Online (Sandbox Code Playgroud)

然后我想将它放在网格或面板中,但我如何引用它?

<Canvas x:Name="RedGreen1" Height="50" Width="50" DataContext="{DynamicResource Ampel}" /> 
Run Code Online (Sandbox Code Playgroud)

这不会返回编译器错误,但在窗口中不显示任何内容.它也不适用于WrapPanel或其他任何东西.

如果它可以工作,我怎么能在代码behing中引用它来改变圆的颜色.有点像RedGreen1.RedGreen.Fill=Brushes.Green

我读了关于红绿灯的文章.是否真的有必要创建一个UserControl,还是有办法用window.resources来解决它?

应用程序的一般概念是有一个参数列表.如果所有参数都标记为绿色,则每个具有正确输入的都标记为绿色并且只能启动计算.

即使我用红色/绿色图像运行它,我也会尝试更好地理解WPF/XAML并学习一些东西.

谢谢.

wpf resources xaml

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

在 AminActivity.kt 中无法识别 Android Studio 4.1 Kotlin 小部件 ID

我尝试使用 Kotlin 在 Android Studio (AS) 4.1 中创建一个新项目。我使用“空活动”并创建项目“MyTest”。

AS 使用未命名的 TextView“Hello World”创建 activity_main.xml。我将 ID 命名为 myText。

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/myText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)

创建的 MainActivity.kt 是标准的,看起来像这样

package com.example.mytest

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
}
Run Code Online (Sandbox Code Playgroud)

所有这些都是正常的,但是

现在在 MAinActivity.kt 中应该可以输入

myText = "任何字符串"

但这里 myText 不被识别。我不明白。

我有一些来自早期 AS 版本的小型测试项目。它们看起来相同 - 并且可以输入 myText 并且可以立即识别 myText。

我的编码或项目创建有什么问题!创建了几个项目并与以前的项目进行了比较,我认为我的做法没有错。谁有想法?

textview kotlin android-studio

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

我在哪里为 Qt 设计器中的单个升级的 QWidget 编写类

我阅读、测试并理解了很多来自 Qt 设计器的 QWidgets 使用示例,这些示例已升级到 PyQt5。尽管如此,我无法为我自己处理一个简单的例子。

下面我展示了我的代码,该代码不起作用并尝试解释。

在 Qt 设计器中,我创建了一个简单的 QMainWindow,标准化命名为 MainWindow

我在其中创建了一个标签 QLabel。我将其提升为“neuLabel”类并将其命名为 labelqt。窗口包含 Add 、标题 neulabel.h 和 Promotion --> 一切都很好。

我明白,我必须为 neuLabel 类编写代码。但是:在哪里做呢?

通过非常简单的例子,我尝试了这样的操作:

from PyQt5 import QtWidgets, uic
import sys
uifile_1 = 'testpromote.ui'
form_1, base_1 = uic.loadUiType(uifile_1)
class neuLabel(QLabel, QPixmap):
    def __init__(self,title,pixmap,parent):
    super().__init__(title,parent)
    self.setAcceptDrops(True)
def mousePressEvent(self, e):
    QLabel.mousePressEvent(self, e)
    if e.button() == QtCore.Qt.LeftButton:
        print('press')
class myApp(base_1, form_1):
    def __init__(self):
        super(base_1,self).__init__()
        self.setupUi(self)
if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = myApp()   #Dialog()
    ex.show()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

错误是这样的

Traceback (most …
Run Code Online (Sandbox Code Playgroud)

python pyqt qt-designer pyqt5 python-3.6

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

从代码隐藏格式化 DataGridTextColumn

也许,我想,事情太简单了。我有一个数据网格,从后面的代码动态添加列。这有效。然后我有带有整数值的列,我希望在列中看到右对齐,但它失败了。我的代码是:

    public List<List<int>> IntegerData { get; set; }................

            DataGridTextColumn textC = new DataGridTextColumn();
            textC.Header = ("Column");
            textC.Binding = new Binding(string.Format("[{0}]", i));    
            textC.Binding.StringFormat = "00000"; 
Run Code Online (Sandbox Code Playgroud)

最后我有类似的东西:

            myDataGrid.Itemssource = IntegerData
Run Code Online (Sandbox Code Playgroud)

使用 textC.Binding.String.Format 的问题是:(首先:看来,stringFormat-LIne 正确重载了前一行)

格式“0”给出一个整数“1”“2”,这是正确的。

格式“00000”给出“00001”“00002”“00003”,这对于字符串格式是正确的,但不是我想要的

但:

格式 "######" 也给出 "1" "2" .. 等等(左对齐,没有前导空格)

由于格式规则我期望(或希望), ##### 是所描述的占位符,结果是 "bbbb1" , "bbbb2" 右对齐。(b 在这里是空白!)

所以绑定似乎正确处理“00000”格式,但不能正确处理“######”格式。有人对这个想法有任何想法或经验吗?(我在互联网上找到的所有其他绑定要复杂得多)

c# wpf string.format code-behind datagridtextcolumn

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