using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace HDSProject.Control { /// <summary> /// CustomFont.xaml 的交互逻辑 /// </summary> public partial class CustomFont : ItemsControl { public CustomFont() { InitializeComponent(); } private string title2 = "测试字体间距zjis"; public string Title2 { get { return title2; } set { title2 = value; OnPropertyChanged("Title2"); } } public event PropertyChangedEventHandler PropertyChanged; protected void OnPropertyChanged(string propertyName) { if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } } } }
时间: 2024-02-15 22:06:56 浏览: 173
这是一个自定义字体控件 CustomFont 的代码。其中包含一个 Title2 属性,可以用于绑定到控件内部的某个元素,例如 TextBlock 的 Text 属性。同时,这个控件还实现了 INotifyPropertyChanged 接口,用于在属性值发生变化时通知 UI 进行更新。
如果你想将 Title2 属性绑定到控件内部的某个元素,可以在 XAML 中这样写:
```xml
<CustomFont Title2="Hello World!" />
```
然后,在 CustomFont 的 XAML 中,就可以通过 Binding 来绑定 Title2 属性,例如:
```xml
<TextBlock Text="{Binding Path=Title2, RelativeSource={RelativeSource AncestorType={x:Type local:CustomFont}}}" />
```
这里的 Path 属性指定要绑定的属性名,RelativeSource 属性指定要找到的控件类型,即 CustomFont。这样,就可以将 Title2 属性的值绑定到 TextBlock 的 Text 属性上了。
相关问题
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using csLTDMC;
这段代码是C#中的一段程序代码。它包含了一些命名空间的引用,例如System、System.Collections.Generic、System.ComponentModel、System.Data、System.Drawing、System.Linq、System.Text、System.Threading.Tasks和System.Windows.Forms。这些命名空间中包含了很多类和方法,可以使我们更加方便地编写C#程序。
此外,这段代码还使用了一个名为 csLTDMC 的命名空间,它很可能是一个自定义的命名空间,其中包含了与运动控制卡相关的代码。在这个命名空间中,可能定义了一些类和方法,用于控制运动控制卡的运动、输入输出等功能。
区块链日记程序 一、题目要求 采用c sharp编程 需要using以下库 using System; using System.Collections.Generic; using BsvSimpleLibrary; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using NBitcoin; using NBitcoin.DataEncoders; using BitcoinSVCryptor; 程序可以输入日记内容 需要将日记内容进行加密 能够将加密数据写入区块链 能够读取链上加密数据 读取的加密数据进行解密 解密后在程序中显示
二、程序设计思路
1. 界面设计
使用Windows窗体应用程序,设计一个简单的界面,包括输入框、加密按钮、写入区块链按钮、读取区块链按钮、解密按钮和显示框等控件。
2. 数据加密
使用BsvSimpleLibrary库中的加密函数,将输入的日记内容进行加密。加密后的数据将被写入区块链。
3. 区块链操作
使用NBitcoin库中的Bitcoin接口,连接到比特币网络,实现写入区块链和读取区块链的功能。
4. 数据解密
使用BsvSimpleLibrary库中的解密函数,将读取的加密数据进行解密。解密后的数据将在程序中显示出来。
三、程序代码实现
以下是程序的核心代码:
```
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using NBitcoin;
using NBitcoin.DataEncoders;
using BitcoinSVCryptor;
using BsvSimpleLibrary;
namespace BlockChainDiary
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
// 连接到比特币网络
public Network network = Network.TestNet;
public BitcoinSecret bitcoinSecret = new BitcoinSecret("私钥", network);
public BitcoinPubKeyAddress bitcoinPubKeyAddress = bitcoinSecret.PubKey.GetAddress(network);
// 加密、写入区块链
private void btnWrite_Click(object sender, EventArgs e)
{
// 加密数据
string diaryContent = txtContent.Text.Trim();
string encryptedData = Cryptor.Encrypt(diaryContent, "密码");
// 写入区块链
var transaction = new Transaction();
transaction.Outputs.Add(new TxOut()
{
Value = Money.Zero,
ScriptPubKey = bitcoinPubKeyAddress.ScriptPubKey
});
transaction.Inputs.Add(new TxIn()
{
PrevOut = new OutPoint(uint256.Zero, uint.MaxValue)
});
transaction.Sign(bitcoinSecret, false);
transaction.Outputs[0].ScriptPubKey = new Script(Encoders.Hex.DecodeData(encryptedData));
var broadcastResponse = network.Broadcast(transaction);
if (broadcastResponse.Success)
{
MessageBox.Show("写入区块链成功!");
}
else
{
MessageBox.Show("写入区块链失败!");
}
}
// 读取区块链、解密
private void btnRead_Click(object sender, EventArgs e)
{
// 读取区块链
var address = bitcoinPubKeyAddress;
var client = new QBitNinjaClient(network);
var balanceModel = client.GetBalance(BitcoinAddress.Create(address.ToString(), network)).Result;
var unspentCoins = balanceModel.Operations.SelectMany(i => i.ReceivedCoins).Where(i => i.TxOut.ScriptPubKey == address.ScriptPubKey).ToList();
var transactionId = unspentCoins.First().Outpoint.Hash;
var transactionResponse = client.GetTransaction(transactionId).Result;
var transaction = transactionResponse.Transaction;
var hex = transaction.Outputs.First().ScriptPubKey.ToHex();
// 解密数据
string decryptedData = Cryptor.Decrypt(hex, "密码");
txtContent.Text = decryptedData;
}
}
}
```
四、程序运行效果
程序界面如下所示:
![程序界面](https://img-blog.csdnimg.cn/20220107145242937.png)
输入日记内容,点击加密按钮,将数据加密后写入区块链:
![加密成功](https://img-blog.csdnimg.cn/20220107145526256.png)
点击读取按钮,将数据从区块链中读取出来并解密:
![解密成功](https://img-blog.csdnimg.cn/20220107145657900.png)
解密后的数据将在程序中显示出来。
阅读全文