Как с библиотеки достучатся к элементам TextBox

Создал я библиотеку классов. Хочу в нём приписать метод, который будет включать в себе параметры такие как(TextBox, PasswordBox ....)

Если прописать его в самом классе (Там где проект, то он понимает эти параметры)

Но когда я пытаюсь прописать его в самой библиотеке, он не видит такие элементы.

введите сюда описание изображения


Ответы (1 шт):

Автор решения: VladD

Если ваша библиотека под .NET Framework у вас проектный файл «старого» стиля (начинается с <?xml ...?><Project ToolsVersion=...; скорее всего это так, если ваш проект под .NET Framework), просто добавьте ссылки на PresentationCore.dll, PresentationFramework.dll, System.Xaml.dll и WindowsBase.dll.

Если хотите, чтобы в проекте появлялись пункты меню наподобие Add → UserControl, вам придётся вручную отредактировать файл с проектом (для этого проще всего временно закрыть Студию), и добавить туда в верхнюю PropertyGroup следующее:

<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

Альтернативно, можно пересоздать библиотеку, используя тип библиотеки «WPF Class Library», так, наверное, будет проще.

Если ваша библиотека под .NET Core или .NET 5+ у вас проектный файл «нового» стиля (то есть начинается с <Project Sdk=...; скорее всего это так, если ваш проект под .NET Core или .NET 5+), загляните в ваш проектный файл (это можно сделать прямо в Студии, не закрывая проект).

Под .NET 5 ваш файл должен выглядеть как-то так:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net5.0-windows</TargetFramework>
    <UseWPF>true</UseWPF>
  </PropertyGroup>

</Project>

(вам нужно net5.0-windows, а не net5.0 в качестве TargetFramework, и проверьте, чтобы <UseWPF>true</UseWPF> присутствовало в какой-то PropertyGroup).

Под .NET Core и .NET Framework должно выглядеть как-то так:

<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">

  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <UseWPF>true</UseWPF>
  </PropertyGroup>

</Project>

(то есть, убедитесь, что ваш SDK = Microsoft.NET.Sdk.WindowsDesktop, а не Microsoft.NET.Sdk, и проверьте, чтобы <UseWPF>true</UseWPF> присутствовало в какой-то PropertyGroup).

И не забудьте добавить using System.Windows.Controls; или где там находятся ваши контролы.

→ Ссылка