Размер (FrameworkElement.ActualWidth FrameworkElement.ActualHeight) и размещение (Canvas.Top, Canvas.Bottom, Canvas.Left, Canvas.Right) ваших элементов будет достаточным, если они всегда прямоугольные. В этом случае вы можете легко вычислить, перекрываются ли два прямоугольника. Если элементы могут быть более сложными, они становятся волосатыми. Я понятия не имею, могу ли я проверить пересечение двух экземпляров Visual в WPF.
Возможно, мы сможем использовать hittesting ? При таком подходе вы могли бы хотя бы проверить, пересекается ли определенная геометрия или с визуализацией certian. Таким образом, вам нужно будет определить геометрию или список точек, которые более или менее точно соответствуют границам вашего второго визуального.
Bot Framework Service не поддерживает стенограммы, это то, что вам нужно внедрить в свой бот. Однако вам повезло, потому что в Bot Builder SDK поставляется промежуточное программное обеспечение с соответствующим названием TranscriptLoggerMiddleware
, которое сделает это за вас и может быть настроено с резервным хранилищем по вашему выбору.
Реализация хранилища, которая поставляется в коробке, - это AzureBlobTranscriptStore
, которая будет просто добавляться к BLOB-объекту на протяжении всей жизни разговора. Однако, если вы хотите сохранить стенограммы, используя другой механизм хранения, вы можете просто реализовать ITranscriptLogger
(только один метод) и передать его промежуточному программному обеспечению.
Для настройки промежуточного программного обеспечения в логике запуска вы должны сделать следующее:
public void ConfigureServices(IServiceCollection services)
{
// Load the settings from config however you like
var myAzureBlobTranscriptSettings = LoadMySettingsFromConfig();
services.AddBot<MyBot>(options =>
{
// Register the middleware
options.Middleware.Add(
new TranscriptLogger(
new AzureBlobTranscriptStore(
myAzureBlobTranscriptSettings.ConnectionString,
myAzureBlobTranscriptSettings.ContainerName)));
});
}